Django2.0中URL的路由机制

2019-04-24  本文已影响0人  极客匠

路由是关联url及其处理函数关系的过程。

Django的url路由配置在setting.py文件中ROOT_URLCONF变量制定全局路由文件名称。

ROOT_URLCONF = 'haohaoread.urls'

Django的路由都写在urls.py文件中的urlpatterns的列表中,由path,re_path组成。

Django的URL路由流程如下:

  1. Django查找全局urlpatterns变量
  2. 按照先后顺序,对URL逐一匹配urlpatterns每个元素
  3. 找到第一个匹配时,停止查找,根据匹配结果执行对应的处理函数
  4. 如果没有找到匹配或出现异常,Django进行错误处理。

Django的路由不考虑Http请求方式,只要url相同,无论post、get等哪种请求方式都指向同一个操作函数。

Urlpatterns中的path()处理字符串路由,re_path处理正则表达式路由。

urlpatterns=[

    path(route,views.函数名,向处理函数提供的额外参数,以字典形式表示,该URL模式的别名),

        re_path(正则表达式,view.对应的处理函数)

]

举例如下:

urlpatterns = [
    path('index/', views.Index),
    path('login/', views.Login),
    path('auth/',views.Auth),
    path('getMenu/',views.Menu),
    re_path(r'^userList/(\d*)',views.List)
]

include

当网站功能较多时,需要做模块化处理,通过django-admin startapp app名称,来生成对应的app目录,建一个urls.py文件。

from django.urls import include, path

urlpatterns = [
    path('community/', include('community.urls')),
    path('contact/', include('contact.urls')),
]

子目录contact下的urls.py:

from django.urls import path

from . import views
urlpatterns = [
    path('contacts/', views.Contacts)
]

views.py

from django.shortcuts import render

from django.http import HttpResponse,HttpRequest
# Create your views here.


def Contacts(request):
    return HttpResponse('<p>sdfsfsfs</p>')

这样,模块化处理路由的问题也就此解决。

上一篇下一篇

猜你喜欢

热点阅读