首页 > 其他分享 >Django 知识库:path()路径映射

Django 知识库:path()路径映射

时间:2023-04-22 19:25:06浏览次数:37  
标签:... articles 知识库 month 参数 path Django day

网站地址是由统一资源定位符表示的,也是就我们常说的 url

Django 中有非常强大的 path() 方法,可以动态构造出你想要的各种不同形态的 url

基本写法如下:

from django.urls import path

urlpatterns = [
    # 固定地址
    path('articles/2003/', ...),
    # 可传入 int 参数
    path('articles/<int:year>/', ...),
    # 可传入 int、str 等多个参数
    path('articles/<int:year>/<str:title>/', ...),
]

可以看出 path() 中是可以传入动态参数的,比如上面的第三个 path() 可以匹配下面的 url

'/articles/2020/awesome/'

并且这些参数可以在视图中取得:

def some_view(request, year, title):
    date = year
    name = title
    ...

你可以给这些参数指定默认值:

def some_view(request, year=2020, title='Django'):
    ...

但是需要注意的是,GET 请求中附带的参数是不能够直接通过视图函数的参数取得的,比如下面这个地址:

'/articles/2020/awesome/?month=4&day=22'

问号后面的参数不能作为视图函数的参数,否则你会得到无情的报错。

获取它们的方法是这样:

def some_view(request, ...):
    ...
    # month = 4
    month = request.GET.get('month')
    # day = 22
    day = request.GET.get('day')
    ...

接下来就可以愉快的使用了,很简单吧。

顺带说一下,上面这个 url 在模板中应该这样子写:

{% url 'parse_name' 2020 'awesome' %}?month=4&day=22

总结,path() 能接受的参数一共有四种

  • str :匹配除路径分隔符 '/' 之外的非空字符串。

  • int :匹配零或正整数。

  • slug :匹配由ASCII字母、数字、连字符、下划线字符组成的字符串。例如, building-your-1st-django-site

  • uuid :匹配格式化的UUID,如 075194d3-6885-417e-a8a8-6c931e272f00

 

标签:...,articles,知识库,month,参数,path,Django,day
From: https://www.cnblogs.com/mengdie1978/p/17343722.html

相关文章

  • Django—Form两种解决表单数据无法动态刷新的方法
    一、无法动态更新数据的实例#Createyourmodelshere.classClasses(models.Model):title=models.CharField(max_length=32)def__str__(self):returnself.titleclassTeacher(models.Model):name=models.CharField(max_length=32)t2c=model......
  • 正则表达式和XPath
    正则表达式常用匹配规则模式描述\w匹配字母、数字以及下划线\W匹配不是字母、数字及下划线的字符\s匹配任意空白字符串,等价于[\t\n\r\f]\S匹配任意非空字符串\d匹配任意数字,等价与[0-9]\D匹配任意非数字的字符\A匹配字符串的开头\Z匹配......
  • django常用命令
    Django常用命令如下:创建Django项目:django-adminstartprojectproject_name该命令会创建一个名为project_name的Django项目创建Django应用程序:pythonmanage.pystartappapp_name该命令会在Django项目中创建一个名为app_name的应用程序。启动Django服务器: pythonmanag......
  • django项目结构
    Django项目结构的详细说明如下:project_name/项目名称,即项目的根目录。manage.pyDjango项目管理工具,可以用它来执行很多操作,如启动服务器、创建数据库等。project_name/项目包,它是存放项目的所有Python代码的地方,该目录下应该包含__init__.py文件,表示该目录是一个Python包。......
  • django实现文件上传、删除、下载
    django文件上传定义一个包含FileFiled的类ModelWithFileField,其中upload字段的upload_to参数表示上传的文件存放在什么地方classModelWithFileField(models.Model):filename=models.CharField(max_length=100,verbose_name="文件名称")upload_date=models.Date......
  • django-restful:购物车 学习记录
    购物车就有获取购物车详情加入购物车删除购物记录同样直接使用mixins中的就够了view这里面没有一个陌生的基本都是前面学习过了的classShoppingCartViewset(viewsets.ModelViewSet):"""购物车功能list:获取购物车详情create:......
  • MFC-SHGetSpecialFolderPath获取指定的系统路径
     CStringstr;TCHARpath[MAX_PATH];BOOLb=SHGetSpecialFolderPath(NULL,path,CSIDL_PROGRAM_FILES_COMMONX86,0);//获取指定的系统路径/*参数1:HWNDhwndOwner窗口所有者的句柄。可以NULL参数2:LPTSTRlpszPath返回路径的缓冲区,该缓......
  • vue-router解决警告:No match found for location with path "XXXXXXX"
      使用vue-router时,在刷新页面时往往会出现这个警告:    这个问题产生的原因往往是因为vue在启动时,会校验当前页面的路由,而我们使用vue-router时,是在导航守卫中动态添加路由的,因此肯定找不到,而这个时候还没进入守卫,自然就会抛出这个警告了:  1、app.use(router)......
  • Django框架——静态文件配置、form表单、request对象、连接数据库、ORM简介、ORM基本
    配置文件介绍SECRET_KEY='0yge9t5m9&%=of**qk2m9z^7-gp2db)g!*5dzb136ys0#)*%*a'#盐DEBUG=True#调试模式,等项目上线的时候,改成False#配置数据库DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3',#默认是自......
  • PYTHONPATH 环境变量
    在"PYTHONPATH"变量中,可以设置多个目录,目录之间用分号(;)分隔。如果没有设置"PYTHONPATH"变量,则默认为当前工作目录。将/path/to/directory添加到PYTHONPATH环境变量的末尾。#windowssetxPYTHONPATH/path/to/directory;%PYTHONPATH%#linuxexportPYTHONPATH=/pa......