Djangourl指定默认参数

Posted 修炼之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Djangourl指定默认参数相关的知识,希望对你有一定的参考价值。

前言

当我们访问网页的时候,后台返回列表中有n条数据,此时我们会使用分页,比如一页只展示10条,但是我们访问第一页的时候大多数情况下,都会给url一个默认值,访问的时候直接展示第一页数据
 

案例

我们的需求:在访问127.0.0.1/books/直接展示第一页数据,在访问127.0.0.1/books/page/2/就展示第二页数据。说完需求,我们开始实现代码

  1. 我们先在项目中创建一个booksapp,然后在books中创建一个urls.py文件,在文件中写入以下代码
urlpatterns = [
    path(\'\', views.page),
    path(\'page/<int:page>/\', views.page)
]
  1. 然后在books.views.py视图中写入视图函数page
def page(request, page=0):
    books_list = [
        \'java大全\',
        \'python大全\',
        \'c语言程序设计\',
        \'javascript大全\'
    ]
    return HttpResponse(books_list[page])
  1. 最后在项目中的根urls.py文件中写入以下代码
urlpatterns = [
    path(\'books/\', include(\'books.urls\')),
]

从以上代码我们可以看到当我们访问127.0.0.1/books/时会匹配这条路径path(\'\', views.page),路径会去执行视图函数page,由于我们没有在路径中传入参数那么默认值就是0,浏览器就会返回java大全

当我们输入127.0.0.1/books/page/2/时,django会匹配path(\'page/<int:page>/\', views.page),然后还是去执行视图函数page,由于这次我们传入了参数page=2,所以这次我们就会返回book_list[2]这本书,也就是c语言程序设计

以上是关于Djangourl指定默认参数的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf,片段和默认参数

调用 C++ 函数时指定默认参数

Python 默认参数混淆

导航组件的默认空值:参数过多错误

测试字符串是不是与带有参数的 django url 匹配

Prometheus配置文件