2

最後の質問で、urls.py を含める前にパラメーターに対して動作する URL を取得する方法を尋ねたところ、動作しました。 Django {% url %} のようなパラメーターを持つ URL の場合: url(r'^foo/<parameter>/$', include(some.urls))

ここで、含まれている同じ urls.pyを namespaces で使用したいと考えています。

urls.py

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

bar.urls.py

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

私が使用するテンプレートでURLを取得するには:

1. {% url foo:bar parameter_1=1 %} or {% url for:bar 1 %}
2. {% url foo:bar_detail parameter_1=1 parameter_2=1 %} or {% url foo:bar_detail 1 1 %}

URL を取得することを期待しています: 1./foo/1/bar/と 2./foo/1/bar/1しかし、うまくいきません。

興味深い:私が電話した場合:

1. {% url foo:bar %}
2. {% url foo:bar_detail parameter_2=1 %} or {% url foo:bar_detail 1 %}

URL を取得します: 1./foo/(?P<parameter_1>%5Cd+)/bar/と 2./foo/(?P<parameter_1>%5d+)/bar/1

私の質問: 私のコードに問題がありましたか、それともコードが何の役にも立ちませんか?

4

1 に答える 1

2

再度検索したところ、エラーが見つかりました。にバグがあり/django/core/urlresolvers.pyます。

https://code.djangoproject.com/ticket/11559#no1でチケットを見つけました。

問題を解決するには、 https://github.com/django/django/commit/02dcbe3317/django/core/urlresolvers.pyから変更されたファイルに置き換える必要があります。

URLタグを使用してdef-serverを再起動するとpython manage.py runserver、正しく解決されます。の代わりに/foo/1/bar/から取得します。{% url foo:bar 1 %}/foo/(?P<parameter_1>%5Cd+)/bar/

于 2012-12-11T10:18:46.513 に答える