私は上司と彼の上司がテンプレートを見て、偽のデータを詰め込み、実際には何もしないアプリからそれらにコメントできるようにしたいので、 django名前空間のURL解決を機能させようとしています。別のアプリでライブ コードを開発する際に同じテンプレートを使用します。したがって、にhttp://localhost:8000/template_test/base
アクセスすると、偽のデータを含む base.html テンプレートがhttp://localhost:8000/uar/base
表示され、(できれば) 本物のデータを含む base.html が表示されます。さらに複雑なことに、/template_test/base url または /uar/base url に移動したかどうかに応じて、偽のデータまたは実際のデータのいずれかを含む uar.html に移動するリンクがページにあります。
したがって、テンプレートの適切な部分は次のとおりです。
<li>
<a href="{% url 'uar:uar' %}">User Access Review</a>
</li>
そして、これが私の project/urls.py の適切な部分です
url(r'^template_test/', include(template_test.urls,
namespace="uar", app_name="template_test")),
url(r'^uar/', include(uar.urls, namespace="uar", app_name="uar")),
そして template_test/urls.py で
urlpatterns = patterns('',
url(r'^base$', template_test.views.base, name="base"),
url(r'^uar$', template_test.views.uar_missing, name="uar"),
そして uar/urls.py で
urlpatterns = patterns('',
url(r'^base$', uar.views.base, name="base"),
url(r'^uar$', uar.views.uar_missing, name="uar"),
template_test/views.py
def base(request):
return render(request, "base.html", {"full_name": "Fake User"},
current_app="template_test")
および uar/views.py
def base(request):
return render(request, "base.html", {"full_name": "Paul Tomblin"},
current_app="uar")
def uar_missing(request):
return render(request, "uar.html", {}, current_app="uar")
しかし、テンプレートにアプリ コンテキストを提供しているにもかかわらず、base.html がいずれかのコンテキストでレンダリングされると{% url 'uar:uar' %}
、テンプレートの/template_test/uar/
は両方のコンテキストになります ({{full_name}} には適切な値があり、それぞれ「偽のユーザー」または「ポール・トンブリン」のいずれか)。そのリンクが現在のアプリ コンテキストを使用するようにするには、何を変更する必要がありますか?
追加情報 アプリケーション コンテキストがリバースで機能していません:
python manage.py shell
Python 2.7.4 (default, Apr 19 2013, 18:28:01)
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.core.urlresolvers import reverse
>>> reverse('uar:uar')
'/template_test/uar'
>>> reverse('uar:uar', current_app='uar')
'/template_test/uar'
>>> reverse('uar:uar', current_app='template_test')
'/template_test/uar'
>>> reverse('uar:uar', current_app='txx')
'/template_test/uar'