zoukankan      html  css  js  c++  java
  • django notes 二:URL dispatcher

    一般在 settings.py 中会有一个  ROOT_URLCONF ,请求到来时 django 会从 ROOT_URLCONF 指向的文件中查找  urlpatterns 变量配置的路由。 

    urlpatterns 中还可以 include 其它 model 中的 urlpatterns, django 会从上到下一个一个查找,看 url 是否匹配。 匹配后就交给对应的 view 处理了。

    urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
        url(r'^index/$', view_index),
        url(r'^blog/', include(blog_urls)),
    ]

    url 中的非命名捕获组在 view 中以位置参数接收, 其实接收的是元组,你用  *args 接收是一样的, 元组会自动解包到对应的位置

    urlpatterns = [
        url(r'^articles/([0-9]{4})/$', views.year_archive),
        url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    ]
    def month_archive(request, year, month):
        pass

    命名捕获组以关键字参数接收, 其实接收的是一个字典,字典会自动解包到对应的字段中,你用 **kw 接收然后自己解也是一样的

    urlpatterns = [
        url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
        url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
    ]
    def month_archive(request, year, month):
        pass

    所有的参数都以字符串来接收,不论你正则中的类型是什么  (Captured arguments are always strings)

    这个地方在开发中遇到好几回坑,后台rpc接口接收的是整形,而我传的是字符串,导致排序不正确,还以为是rpc接口有问题,水平太菜。

    重写默认的 404 500 界面,  只要在 ROOT_URLCONF 中给 django.conf.urls.handler404 赋值一个自定义 view 就行了

    django.conf.urls.handler404 = view_404
    django.conf.urls.handler500 = view_500

    Reverse url , 要 reverse 得先给 url  起个名字

    非命名参数 reverse

    urlpatterns = [
        url(r'^articles/([0-9]{4})/$', view_articles, name='article')
    ]
    
    print(reverse('article', args=(2015,)))

    命名参数 reverse

    def view_articles(request, year):
        return HttpResponse(content='hello world')
    
    
    urlpatterns = [
        url(r'^articles/(?P<year>[0-9]{4})/$', view_articles, name='article')
    ]
    
    print(reverse('article', kwargs={'year': 2018}))

     

  • 相关阅读:
    WebService的使用
    Nginx的安装与部署
    Linux下安装mysql5.7
    SpringBoot之旅 -- 定时任务两种(Spring Schedule 与 Quartz 整合 )实现
    ELK 日志分析系统
    解决SpringBoot jar包太大的问题
    IntelliJ Idea 授权服务器使用
    Mybatis Generator最完整配置详解
    PyCharm2016.2专业版注册码
    HttpClient实现HTTP文件通用下载类
  • 原文地址:https://www.cnblogs.com/lesliefang/p/4695350.html
Copyright © 2011-2022 走看看