2012-08-04 63 views
2

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

+0

我没有试过,但你可以令状e“包含”的装饰器:http://djangosnippets.org/snippets/2532/,以便包含的url模式中的每个条目都带有您想要传递的可选参数 – 2012-08-04 22:38:46

回答

0

我不这么认为,但你完全可以使用一个变量:如果您希望能够将值添加到在运行某些URL

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'), 
)