Django基础之路由分发

Posted 17vv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django基础之路由分发相关的知识,希望对你有一定的参考价值。

Django之路由层

一、路由的作用

? 路由其实就是请求地址与视图函数的映射关系,如果把网站比喻为一本书,那么路由就好比是这本书的目录,在Django中路由默认配置在urls.py中。

二、简单的路由配置

# urls.py
from django.conf.urls import url

# urlpatterns(路由表):由一条条映射关系组成
urlpatterns = [
    url(regex, view, kwargs=None, name=None),  # ulr本质是一个函数
]

# regex: 正则表达式,用来匹配url地址的路径部分 例如:http://127.0.0.1:8000/index/匹配的部# 分为 index/
# view: 通常为一个视图函数,用来处理业务逻辑
# kwargs: 略(用法详见有名分组)
# name: 略(用法详见反向解析)

注意:

? 在配置文件settings.py中有一个参数APPEND_SLASH,该参数有两个值True或False。当APPEND_SLASH=True(如果配置文件中没有该配置, APPEND_SLASH的默认值为True),并且用户请求的url地址的路径部分不是以/结尾。那么当这个url匹配不到的时候,Django会在路径后面加上/再去路由表中匹配。

三、分组

? 分组主要是为了让后台获取url中的参数。Django中有两种分组方式,分别为:无名分组与有名分组。

3.1 无名分组

# urls.py
from django.conf.urls import url

urlpatterns = [
    # 下述正则表达式会匹配url地址的路径部分为:index/数字/,匹配成功的分组部分会以位置参数的形式传给视图函数,有几个分组就传几个位置参数(小括号内为参数的值)
    url(r'^index/(d+)/$', views.index),
]

3.2 有名分组

# urls.py
from django.conf.urls import url

urlpatterns = [
    # 该正则会匹配url地址的路径部分为:article/数字/,匹配成功的分组部分会以关键字参数(article_id=匹配成功的数字)的形式传给视图函数,有几个又名分组就会传几个关键字参数
    url(r'^index/(?P<index_id>d+)$', views.index),
]

总结:

? 有名分组和无名分组都是为了获取路径中的参数,并传递给视图函数,区别在于无名分是以位置参数的形式传递,有名分组是以关键字参数的形式传递。

注意:无名分组和有名分组不要混合使用!!!!!!

四、路由分发

未完待续......

以上是关于Django基础之路由分发的主要内容,如果未能解决你的问题,请参考以下文章

django之路由分组,路由分发,FBV,CBV,ORM框架

Django之路由层 (有名和无名分组 反向解析 路由分发 名称空间)

Django基础篇--模板和路由分发

Django之路由(urls)层

1-3.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之三

Django-MTV