2

Django の urls.py では、オプションのパラメーターを指定して、単一の url() オブジェクトのビューに渡すことができることを知っています。私の質問は、同じオプションのパラメーターを指定して、patterns() オブジェクト内のすべての url() に適用することは可能ですか?

4

1 に答える 1

0

そうは思いませんが、単純に変数を使用できます。

d = { 'foo' : very_long_value }

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

その場でいくつかの URL に値を追加できるようにしたい場合は、次の操作を実行できます。

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'),
)
于 2012-08-04T22:45:06.433 に答える