Django:如何在我的项目urlconf中覆盖应用程序提供的url?

栏目: Python · 发布时间: 7年前

内容简介:代码日志版权声明:翻译自:http://stackoverflow.com/questions/9306143/django-how-do-i-override-app-supplied-urls-in-my-project-urlconf

假设我有一个具有三个应用程序的Django项目:foo,bar和胶水.我试图遵循可重用的应用约定,所以foo和bar不依赖于(并且不知道任何事情)彼此或胶水. Glue包含将其他两个应用程序集成到网站中的代码.

Foo提供一个我想要包含在由bar提供的页面之一的模板标签.可以将条形图的视图传递给替代模板.我用胶水制作一个模板,扩展了bar的模板,并且包含了foo中的模板标签.为了将我的新模板传递给bar的视图,我需要修改指向它的urlconf条目.

我的项目urlconf看起来像这样:

urlpatterns = patterns('',
  (r'^$', include('glue.urls')),
  (r'^foo/', include('foo.urls')),
  (r'^bar/', include('bar.urls')),
)

将替代模板(或任何其他任意视图参数,就此而言)传递给视图的最优雅的方法是什么?我不想直接修改bar的urlconf,因为这将使它依赖于胶水.

我可以想到的唯一其他方法是删除include(‘bar.urls’),将bar的urlconf中的url模式复制到项目urlconf中,并修改我感兴趣的模式,这种方法违反了DRY原则.有没有其他的解决方案,我失踪了?

显然urlconf中允许重复的URL,列出的第一个匹配项将具有以下优先级:
urlpatterns = patterns('',
  (r'^$', include('glue.urls')),
  (r'^foo/', include('foo.urls')),

  # This will override the same URL in bar's urlconf:
  (r'^bar/stuff/$', 'glue.views.new_bar_stuff', {'arg': 'yarrgh'}, 'bar_stuff'),

  (r'^bar/', include('bar.urls')),
)

代码日志版权声明:

翻译自:http://stackoverflow.com/questions/9306143/django-how-do-i-override-app-supplied-urls-in-my-project-urlconf


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Practice of Programming

The Practice of Programming

Brian W. Kernighan、Rob Pike / Addison-Wesley / 1999-2-14 / USD 49.99

With the same insight and authority that made their book The Unix Programming Environment a classic, Brian Kernighan and Rob Pike have written The Practice of Programming to help make individual progr......一起来看看 《The Practice of Programming》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

html转js在线工具
html转js在线工具

html转js在线工具