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}))

     

  • 相关阅读:
    supervisord golang 实现试用
    Prisma 2.0 ga
    fpm-cookery fpm 的包装工具
    rejoiner 基于grpc 以及其他protobuf 源生成统一graphql schema 框架
    topngx 一个不错的nginx 日志分析工具
    hasura graphql-engine v1.3 beta 发布
    openresty+graylog 记录proxy 请求以及响应日志
    基于纯真ip库以及openresty 模仿实现类似搜狐ip获取区域的服务
    zombie 试用
    tabnine 一个智能强大的代码插件
  • 原文地址:https://www.cnblogs.com/lesliefang/p/4695350.html
Copyright © 2011-2022 走看看