我試圖讓django namespaced url resolution工作,因爲我希望我的老闆和他的老闆能夠看到模板並從一個只填充虛假數據的應用程序對它們發表評論,而實際上並沒有任何東西,而我使用相同的模板開發不同的應用程序中的實時代碼。所以,如果你去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>
這裏是我的項目/ 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"),
and in 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")
但是,儘管事實上,我提供一個應用程序上下文的模板,當基地.html在上下文中呈現,模板中的{% url 'uar:uar' %}
在上下文中最終爲/template_test/uar/
({{full_name}}具有相應的值,分別爲「假用戶」或「Paul Tomblin」)。我必須更改哪些鏈接才能使用當前的應用上下文?
其他信息應用程序上下文不與反向工作:
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'