Django路由系统,路由分发,正则表达式路由,理解Import_module 和getattr函数,反射,namespace,name,两个路由分发扩展,Django 重定向,相对和绝对导入urls
# Django路由系统示例
from django.urls import path, re_path, include
from django.conf import settings
from django.utils.module_loading import import_module
urlpatterns = [
path('admin/', admin.site.urls),
]
# 根据设置加载应用的路由
for app_name in settings.INSTALLED_APPS:
try:
urlpatterns += [
path('{}/'.format(app_name), include(import_module('{}.urls'.format(app_name))))
]
except ImportError:
# 应用可能没有urls.py文件
pass
# 使用正则表达式定义路由
urlpatterns += [
re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
]
这个示例展示了如何在Django中设置路由,包括如何使用path
和re_path
函数来定义常规路由和正则表达式路由,以及如何使用include
函数来实现路由分发。同时,通过循环遍历INSTALLED_APPS
来导入每个应用的urls.py
模块,并使用import_module
函数来动态导入路由模块,这样可以避免硬编码模块路径,从而使代码更加灵活和可维护。
评论已关闭