网站地址是由统一资源定位符表示的,也是就我们常说的 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