django 的url调度器支持自定义
urlpatterns = [
path('admin/', admin.site.urls),
path('year/<yyy:year>/', test_urlConverter),
re_path('^re/(?P<year>[0-9]{4})/$', test_re_path),
re_path(r'^re/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', test_re_path_month),
]
path和re_path为两种方式
path自定义url时需要另外创建一个类,作为url调度器的引用
class yearConverter(object):
regex = '[0-9]{4}'
def to_python(self, value):
return int(value)
def to_url(self, value):
return '%04d' % value
通过django.urls的register_converter进行注册
register_converter(yearConverter, 'yyy')
# yyy是url调度器的别称
re_path调度器的使用则是通过正则表达式直接使用,不过有特定的规则写法
具体可查阅django中're_path'的用法_re.path-CSDN博客
url调度器默认值
默认值有两种方式,一种是通过python基础语法在views.py文件中定义路由函数方法的时候进行默认值传递,但是要注意的是,函数的参数必须在path路径中也要有参数传递
另一种是在path路径后加入{'参数名称','参数默认值'}
path('args/', args_index),
path('args/<int:index>', args_index),
# 第二种方式
path('other_args/', other_args,{'info': 'hello'}),
def args_index(request,index = 4):
return HttpResponse(f'接收到的参数为{index}')
def other_args(request,info):
return HttpResponse(f'接收到的参数为{info}')
url调度器引用自定义错误页面
自定义错误页面需要使用handler定义
在主应用urls.py中引入此变量,
handler404 = 'error_app.views.error_view'
'''
error_app为子app,views为子应用py文件,里面的error_view函数返回的视图
上述为自己定义的错误页面的一个路径
handler为固定,后面的404为状态码,也可以为500,400等
'''
引入其他的url调度器
有多种方式,个人喜爱是在子应用中创建urls最后将路由组件导入
'''
子应用中创建urls自定义新的路径
'''
from django.urls import path
from .views import include_test
urlpatterns = [
path('include/', include_test),
]
# 最后在主应用中将urls的路由变量导入
url调度器的引用可以列表的方式迭代器会将path一次引入
from django.urls import path,re_path,include
from url_include_app.views import include_test1,include_test2
from url_include_app.urls import urlpatterns as urlpatt
path('inc/',include(urlpatt)),
path('include/',include([
path(' /', include_test1),
path('test2/', include_test2),
]))