4

次の構成でテンプレートでURLを取得する方法(Django1.3を使用):

urls.py

urlpatterns = patterns('',
    url(r'^/foo/(?P<parameter>\d+)/$', include('bar.urls'), name='foo-url'),
    )

含まれる url-conf:

bar.urls.py

urlpatterns = patterns('',
    (r'^/bar/$', 'bar.views.index'),
    url(r'^/bar/(?P<parameter2>\d+)/$', 'bar.views.detail', name='bar-url'),
    )

bar.views.py

def detail(request, parameter, parameter2):
    obj1 = Foo.objects.get(id=parameter)
    obj2 = Bar.objects.get(id=parameter2)

今、私はテンプレートでURLを取得しようとしています:

{% url bar-url parameter=1 parameter2=2 %}

私は得ることを期待しています: /bar/1/foo/2/

この場合、{% url %} を使用できますか?

4

2 に答える 2

3

はい、次のように URL を取得できます:-

{% url 'bar-url' 1 2 %}

ただし、URL 構成は実際には次のようにする必要があることに注意してください。

urls.py

urlpatterns = patterns('',
    url(r'^/foo/(?P<parameter>\d+)/, include('bar.urls')),
)

bar.urls.py

urlpatterns = patterns('',
    (r'^/bar/$, 'bar.views.index'),
    url(r'^/bar/(?P<parameter2>\d+)/$, 'bar.views.detail', name='bar-url'),
)

特にマップしない限り、ありませんfoo-url:-

urls.py

urlpatterns = patterns('',
    url(r'^/foo/(?P<parameter>\d+)/$, 'another.views.foo', name='foo'),
    url(r'^/foo/(?P<parameter>\d+)/, include('bar.urls')),
)

$は正規表現の終わりを意味することに注意してください。

于 2012-11-22T23:18:09.013 に答える