Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘-一、静态路由

Django的路由系统中,通过urls的匹配,可以直接映射到特定的视图函数或类视图,在当前整个路由中没有携带任何动态改变的值,称之为静态路由


通俗来说,访问路径中,不存在动态传递数据,称之为静态路由

urlpatterns属性:

urlpatterns是路由文件中的一个全局变量,用来存放路由及视图函数的映射关系

用户发起的请求URL都会首先进入主控制目录下的这个urls.py文件中进行查找匹配:

  1. 首先找到urls.py下的urlpatterns全局变量,这是一个路由规则实例的列表数据。
  2. 按照先后定义顺序,进行路由匹配。
  3. 找到第一个匹配项时停止匹配,执行匹配到的视图函数。
  4. 遍历完全,未发现匹配,django进行异常处理

其中urlpatterns中的每一个路由映射规则可以由pathre_path进行构造

1.1 静态路由匹配方式:

path方法:

path(str, view, kwargs=None, name=None)
'''
str:一个匹配对应url地址的规则字符串
view:路由对应的视图函数,并且会自动封装HttpRequest作为第一个参数给这个视图函
kwargs:视图函数的关键字参数
name:该路由的全局命名,可以让我们方便的在django项目中任意部分显示的使用,相当于为url取变量名,接下来全局使用该命名值即可;当对应url路由改变之后,结合路由反向解析使用的地方不需要更改路由,
 案例:<a href="{% url url_name %}"></a>
'''

re_path方法:

re_path(regex, view, kwargs=None, name=None)
'''
regex:一个匹配对应url地址的规则字符串
view:路由对应的视图函数,并且会自动封装HttpRequest作为第一个参数给这个视图函
kwargs:视图函数的关键字参数
name:该路由的全局命名,可以让我们方便的在django项目中任意部分显示的使用,相当于为url取变量名,接下来全局使用该命名值即可;当对应url路由改变之后,结合路由反向解析使用的地方不需要更改路由
'''

1.2 静态路由示例

# views.py
from django.http import HttpResponse
def index(request):
    return HttpResponse('Hello Worlds!')   

# urls.py     
from django.urls import path,re_path
from urlapp import views
urlpatterns = [
    path('index/',views.index),
    re_path(r"^/$",views.index),#此处完善对应的正则表达式即可
    re_path(r"^index/\d+/$",IndexView.as_view()), #CBV
]
上一篇:从零手写实现 nginx-19-HTTP CORS(Cross-Origin Resource Sharing,跨源资源共享)介绍+解决方案


下一篇:聚合分析是Elasticsearch中非常强大的工具