urls参数
嵌套参数
views.py
def url_index(request, index): return HttpResponse(“返回的参数名是index,它的值是: {}”.format(index))
- 运行
<br />![](https://cdn.nlark.com/yuque/0/2019/png/367873/1559636472366-2d13c742-9e4e-4231-84c1-f1b418d15a50.png#align=left&display=inline&height=97&originHeight=97&originWidth=314&size=0&status=done&width=314)
<a name="2171d1b0"></a>
### 默认参数
- 可以给视图函数的传递参数设置一个默认值,这样`path()`中传递的参数就可以不用写
```python
# urls.py
urlpatterns = [
path('default/', v.default_param),
path('default/<int:param>', v.default_param),
]
#views.py
book = [
"页面1",
"页面2",
"页面3",
"页面4",
]
def default_param(request, param=0):
return HttpResponse(book[param])
- 运行
传递额外参数
views.py
def url_extra(request, extra): return HttpResponse(“返回的额外参数名是extra, 它的值是: {}”.format(extra))
- 运行
<br />![](https://cdn.nlark.com/yuque/0/2019/png/367873/1559636472500-0add0e59-bc01-416b-91f4-4af0e6aba520.png#align=left&display=inline&height=111&originHeight=111&originWidth=358&size=0&status=done&width=358)
<a name="cb71799e"></a>
### 查询字符串
- 在URL中,不需要单独的匹配查询字符串的部分。只需要在视图函数中使用`request.GET.get("参数名")`的方式来获取 。因为查询字符串使用的是`GET`请求,所以我们通过`request.GET`来获取参数,并且因为`GET`是一个类似于字典的数据类型,获取值的方式和字典一样。
```python
# urls.py
path('app/query/', v.url_query),
#views.py
def url_query(request):
variable = request.GET.get("id") # 获得键id所对应的值
return HttpResponse("返回的查询字符串是: {}".format(variable))
- 运行
url的反向编码
- 防止硬编码
- 本质上是对每一个url进行命名
- 以后在编码代码中使用中URL的值,原则上都应该使用反向解析
# urls.py
path('app/reverse/', v.url_reverse, name="jack"),
# views.py
from django.urls import reverse #从1.10.*开始从django.urls包导入
def url_reverse(request):
url_name = reverse("jack")
return HttpResponse("返回的url是: {}".format(url_name))
- 运行
此时更改URL
path('app/R/', v.url_reverse, name="jack"),
- 运行