66 路由

主要内容:

1 :  发请求http://127.0.0.1:8000/home/1234/12, 后面不用写/的原因

  Django会帮我们自动跳转到http://127.0.0.1:8000/home/1234/12/页面, 不是浏览器自动帮我们添加的.

  可以不帮我们自动添加/, 在setting中设置APPEND_SLASH = False, 默认为true自动添加

2 分组和分组命名

 url(r'^group/[0-9]{4}/([0-9]{2})/$', views.group),  # 分组
    url(r'^group_name/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.group_name),  # 分组命名

  views里的代码:

# 分组匹配
def group(request, month):分组会传来一个参数, 所以加一个位置参数
    print(month)
    return HttpResponse('ok')
# 命名分组
def group_name(request, *args, **kwargs):
    print(args)
    print(kwargs)          #year 和 month相当于关键字参数
    year = kwargs.get('year')   只能写year和month
    month = kwargs.get('month')
    print(year, month)
    return HttpResponse('ok')

3 include其他的URLconfs

from django.conf.urls import url, include        # 一定要导入include
from django.contrib import admin
urlpatterns = [
    url(r'^admin/$', admin.site.urls),
    url(r'app01/', include('app01.urls')),  #可以包含其他的urlconfs文件
]

4 给视图添加参数, 会替换原来的值

    url(r'^group_name/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.group_name, {'year': 2018}),  # 分组命名
    url(r'^group_name/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.group_name),  # 分组命名

  结论: 无论写什么年份, 都会被2018替换

5  命名URL, 和 URL反向解析

            1. 命名:

      from django.urls import reverse

      url(r'^press_list/', views.press_list, name='press_list'),给我的url匹配模式起名为press_list

      url(r'^press_list/', views.press_list, name='press_list')

    2. 反向解析:

      在视图函数中的写法: reverse('press_list')

      在模板中的写法:        {% url 'press_list'%}

  结论: 如果改变我的匹配模式, 可以通过name 方向解析出该匹配模式, 此时就不用修改用到该网址的地方.

猜你喜欢

转载自www.cnblogs.com/gyh412724/p/9768390.html
66