Django路由全攻略:从入门到精通,Pytorch强化学习demo。
Django 路由详解路由基础概念Django的路由系统通过URLconfURL配置模块实现核心是将URL模式映射到视图函数或类。路由定义在项目的urls.py文件中支持动态参数、正则表达式和命名空间。URLconf 配置在Django项目中主路由文件通常为settings.py中定义的ROOT_URLCONF指向的模块默认为项目目录下的urls.py。基础路由配置示例from django.urls import path from . import views urlpatterns [ path(articles/, views.article_list), path(articles/int:year/, views.article_archive), ]path()函数用于定义简单路由int:year表示捕获整型参数并传递给视图。动态路由参数Django支持多种参数类型通过转换器Converter实现str默认类型匹配非空字符串不含/。int匹配整型。slug匹配字母、数字、连字符组成的字符串。uuid匹配UUID格式字符串。path匹配包含/的完整路径。自定义转换器示例from django.urls import register_converter class YearConverter: regex r[0-9]{4} def to_python(self, value): return int(value) def to_url(self, value): return str(value) register_converter(YearConverter, yyyy) urlpatterns [ path(articles/yyyy:year/, views.year_archive), ]正则表达式路由对于复杂匹配需求可使用re_path()Django 2.0或直接导入url()旧版本from django.urls import re_path urlpatterns [ re_path(r^articles/(?Pyear[0-9]{4})/$, views.year_archive), ]路由分发与include大型项目通常通过include()拆分路由到不同应用# 主urls.py from django.urls import include, path urlpatterns [ path(blog/, include(blog.urls)), ]子应用blog/urls.py中定义具体路由。命名路由与反向解析为路由命名后可通过reverse()或模板标签动态生成URLurlpatterns [ path(articles/int:year/, views.year_archive, namenews-year-archive), ]在视图或模板中使用from django.urls import reverse reverse(news-year-archive, args[2023])模板中a href{% url news-year-archive 2023 %}2023 Archive/a命名空间避免多应用路由命名冲突可使用namespace# 主urls.py urlpatterns [ path(blog/, include(blog.urls, namespaceblog)), ]反向解析时需指定命名空间reverse(blog:article-detail, args[1])路由中间件与装饰器可通过装饰器如login_required或中间件控制路由访问权限from django.contrib.auth.decorators import login_required urlpatterns [ path(profile/, login_required(views.profile)), ]性能优化建议避免过于复杂的正则表达式。使用path()替代re_path()提升可读性。对高频路由启用缓存如django.middleware.cache.FetchFromCacheMiddleware。通过合理设计路由可实现清晰的URL结构、灵活的参数处理和高效的代码组织。https://github.com/aradev-ixps/5uh_t0cv/issues/92https://github.com/tonyam09/s45_0kd1/issues/92https://github.com/alexanders5/s1o_7vx7/issues/93https://github.com/greemenbasestran/4x5_wfiq/issues/92https://github.com/xmx-pws/hfp_pwpb/issues/91