模式中每个url()的Django可选url参数()

时间:2012-08-04 21:32:41

标签: python django url-routing

在Django的urls.py中,我知道您可以指定一个可选参数来传递给单个url()对象的视图。我的问题是,是否可以指定相同的可选参数,并将其应用于patterns()对象内的每个url()。

1 个答案:

答案 0 :(得分:0)

我不这么认为,但你可以简单地使用一个变量:

d = { 'foo' : very_long_value }

urlpatterns = patterns('',
    url('^aaaa/$', 'aaa', d),
    url('^bbbb/$', 'bbb', d),
    url('^cccc/$', 'ccc', d),
)

如果您希望能够动态地为某些网址添加值,您可以执行以下操作:

def add_dict(d, **kw):
    x = d.copy()
    x.update(kw)
    return x

d = { 'foo' : very_long_argument }

urlpatterns = patterns('',
    url('^aaaa/$', 'aaa', d),
    url('^bbbb/$', 'bbb', d),
    url('^cccc/$', 'ccc', add_dict(d, bar = 'xxx')),
)

或者您可以编写自己的url包装器:

def my_url(regex, view, kwargs=None, name=None, prefix=''):
    if kwargs is None:
        kwargs = {}
    kwargs.update(foo = very_long_argument)
    return url(regex, view, kwargs, name, prefix)

urlpatterns = patterns('',
    my_url('^aaaa/$', 'aaa'),
    my_url('^bbbb/$', 'bbb'),
    my_url('^cccc/$', 'ccc' { 'bar' : 'xxx'),
)