Django urls.py 路由配置的三种常用写法解析
本文详细解析Django项目中urls.py文件的三种主流配置方式。第一种通过直接导入视图函数进行映射;第二种采用字符串形式的视图路径引用;第三种利用patterns函数设置前缀以简化URL定义。文章通过具体代码示例对比各写法的异同,帮助开发者根据项目需求选择最合适的路由配置方案,提升代码可读性与维护效率。
在Django项目中,urls.py文件的路由配置通常存在三种常见的实现方式。
第一种方式是通过导入视图函数来定义URL映射,这也是《The Django Book》示例中采用的标准写法。
from blog.views import index url(r'^nowamagic/', index)
第二种方式直接使用字符串形式的视图处理路径,从代码结构即可清晰看出其工作原理。
url(r'^nowamagic/', 'test.views.index')
第三种方式则是将模型与视图名称合并到URL前缀中进行定义。
urlpatterns = patterns('blog.views',
url(r'^nowamagic$', 'index' )
url(r'^nowamagic/\d{2}/$', 'index')
url(r'^nowamagic/(?P<id>\d{2})/$', 'index' )
这三种方法在核心逻辑上大同小异,主要区别在于代码的组织形式。
以下是对上述几种配置方式的详细代码总结:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
# test_client modeltest urls
(r'^test_client/', include('modeltests.test_client.urls')),
(r'^test_client_regress/', include('regressiontests.test_client_regress.urls')),
# File upload test views
(r'^file_uploads/', include('regressiontests.file_uploads.urls')),
# Always provide the auth system login and logout views
(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),
(r'^accounts/logout/$', 'django.contrib.auth.views.logout'),
# test urlconf for {% url %} template tag
(r'^url_tag/', include('regressiontests.templates.urls')),
# django built-in views
(r'^views/', include('regressiontests.views.urls')),
# test urlconf for middleware tests
(r'^middleware/', include('regressiontests.middleware.urls')),
# admin view tests
(r'^test_admin/', include('regressiontests.admin_views.urls')),
(r'^generic_inline_admin/', include('regressiontests.generic_inline_admin.urls')),
# admin widget tests
(r'widget_admin/', include('regressiontests.admin_widgets.urls')),
(r'^utils/', include('regressiontests.utils.urls')),
# test urlconf for syndication tests
(r'^syndication/', include('regressiontests.syndication.urls')),
# conditional get views
(r'condition/', include('regressiontests.conditional_processing.urls')),
# middleware exceptions tests
(r'middleware_exceptions/', include('regressiontests.middleware_exceptions.urls')),
# special headers views
(r'special_headers/', include('regressiontests.special_headers.urls')),
)
感谢阅读,希望本文能为您提供帮助,也感谢大家对本站的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













