首页 > 其他 > 详细

Django 路由系统

时间:2019-05-17 21:29:09      阅读:118      评论:0      收藏:0      [点我收藏+]

单一路由对应

from django.urls import re_path path

re_path(r'^login.html$', views.login),
path(r'login.html', views.login),

基于正则的路由

from django.urls import re_path

re_path(r'^test-(\d+)/', views.test),   # 以位置判断参数
re_path(r'^url-(?P<nid>\d+)-(?P<uid>\d+).html', views.url),     # 以名称判断参数,建议使用这种,不受传递参数位置改变影响

获取方法:

def test1(request, page):
    print(page)
    return render(request, 'test1.html')

def test2(request, **kwargs):
    print(kwargs.get('nid', None), kwargs.get('uid', None))
    return render(request, 'test2.html')

添加额外的参数

为路由映射设置名称

re_path(r'^index1/', views.index, name='i1'),
re_path(r'^index2/(\d+)/(\d+)/', views.index, name='i2'),
re_path(r'^index3/(?P<pid>\d+)/(?P<nid>\d+)/', views.index, name='i3'),

在 .py 文件中

from django.urls import reverse

def func(request, *args, **kwargs):
url1 = reverse('i1')                              # index1/
url2 = reverse('i2', args=(1,2,))                 # index2/1/2/
url3 = reverse('i3', kwargs={'pid': 1, 'nid': 9}) # index3/1/9/

在 html 文件中

{% url "i1" %}               # index1/
{% url "i2" 1 2 %}           # index2/1/2/
{% url "i3" pid=1 nid=9 %}   # index3/1/9/

根据APP对路由规则进行分类

project/urls.py:

from django.conf.urls import re_path, include
from django.contrib import admin

urlpatterns = [
    re_path(r'^app01/', include("app01.urls")),
    re_path(r'^app02/', include("app02.urls")),
]

app01/urls.py:

from django.conf.urls import re_path, include
from django.contrib import admin
from app01 import views

urlpatterns = [
    re_path(r'^login/', views.login),
]

app02/urls.py:

from django.conf.urls import re_path, include
from django.contrib import admin
from app02 import views

urlpatterns = [
    url(r'^login/', views.login),
]

默认值

命名空间

Django 路由系统

原文:https://www.cnblogs.com/dbf-/p/10883606.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!