• django路由


     

    路由

    无名分组

    url(r'^test/([0-9]{4})/([0-9]{2})', views.test)

    • url为一个函数,第一个参数写正则表达式
    • 路由从上往下匹配,一旦匹配成功就不继续向下走了
    • 如果分多个组,相应的视图函数就需要用多个参数接收,个数必须一致,或者使用*args
    • 在setting里设置:APPEND_SLASH=False,请求时,浏览器不会自动补全斜杠,带上斜杠就匹配失败
    • 伪静态,方便搜索引擎收录

    有名分组

    • url(r'^test/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})', views.test)
    • 相应的视图函数中的参数名字和个数必须一致,否则会报错,位置可以颠倒
    • 有名分组可以使用**kwargs接收
    • 分组捕获的参数,都是str类型
    • 可以可以设置默认值

    路由分发

    • 先导入from django.conf.urls import include
    • url(r'^app01/',include('app01.urls'))
    • 在相应的app里创建urls.py文件
    • 文件中的urlpatterns不能变名字,其他写法与自带的相同

    反向解析

    1.路由中,命一个名,url(r'^index/', views.index,name='n1')
    2.在视图函数里导入from django.shortcuts import reverse
        # 拿到反向解析的url
        url = reverse('n1')
    3.在模板里使用时:
        {% url 'n1' %}
    4.带位置参数的反向解析
        url(r'^index/([0-9]{4})/([0-9]{2})', views.index,name='n1')
      在视图中:url=reverse('n1',args=(2012,12,))
      在模板中:{% url 'n1' 2012 12 %}
    5.带关键字参数反向解析
        url(r'^index/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})', views.index,name='n1')
      在视图中:
          方法一:url=reverse('n1',args=(2012,12,)  
          方法二:url=reverse('n1',kwargs={'year'=2012,'month':12})
      在模板中: 
          方法一:{% url 'n1' 2012 12 %}
          方法二:{% url 'n1' month=12 year=2012 %}
      注意:按位置传,顺序必须是固定的
    作用:修改路由中url的时候,其它地方不需要改动
    

    名称空间

    (知道它,但是建议不同app的url里name不能重名,app的名字_name)
    主urls中
        url(r'^app01/', include('app01.urls',namespace='app01')),
        url(r'^app02/', include('app02.urls',namespace='app02')),
    app01的urls中
    	urlpatterns = [
    		url(r'^test',views.test3 ,name='test'),
    	]
    app02的urls中			
    	urlpatterns = [
    			url(r'^test02',views.test3 ,name='test'),
    		]
    		
    在视图函数中:
        url=reverse('app02:test')
    在模板中:
        <a href="{% url 'app02:test' %}">点我跳到首页</a>
  • 相关阅读:
    React个人学习笔记
    electron 学习笔记
    微信小程序学习笔记
    算法
    17 django中间件
    16 django用户认证组件
    15 django_cookie&session
    14 django_forms
    13 django分页器
    12 django_ajax
  • 原文地址:https://www.cnblogs.com/luck-L/p/9585806.html
Copyright © 2020-2023  润新知