複数のアプリで複数回使用されるブログ アプリを作成しようとしています。ただし、ビュー内の url templatetag も reverse の呼び出しも、current_app 名前空間インスタンスに基づいて正しい URL を生成しません。
私はDjango 1.5.1を使用しています
myproject/urls.py (test1、test2、および test3 は異なるアプリであることに注意してください)
urlpatterns = patterns('',
url(r'^test1/', include('test1.urls', namespace='test1', app_name='section')),
url(r'^test2/', include('test2.urls', namespace='test2', app_name='section')),
url(r'^test3/', include('test3.urls', namespace='test3', app_name='section')),
)
test1/urls.py (test2 と test3 も同様)
urlpatterns = patterns('test1',
url(r'^blog/', include('blog.urls', namespace='blog', app_name='blog')),
url(r'^articles/', include('blog.urls', namespace='articles', app_name='blog')),
)
ブログ/urls.py
urlpatterns = patterns('blog',
...
url(r'^new/$', blog_new, name='new'),
url(r'^new/preview$', blog_preview, name='new_preview'),
...
)
ブログ/views.py
def blog_new(request, *args, **kwargs):
...
r = resolve(request.path)
context = {
...
'current_namespace': r.namespace,
'preview_url': reverse('section:blog:new_preview',
current_app=r.namespace)
...
}
return render(request, template_name, context, current_app=r.namespace)
また、_sidebar_menu.html で
<a href="{% url 'section:blog:new_preview' %}">
次のいずれかに移動すると:
/test1/blog/new
/test1/articles/new
/test2/blog/new
/test2/articles/new
/test3/blog/new
/test3/articles/new
「preview_url」コンテキスト変数と、アンカータグの「test1/blog/new/preview」の href に対して、常に同じ結果が得られます。それでも、コンテキスト変数「current_namespace」には、期待される正確な値が含まれています。
ここで髪を伸ばします!求めているモジュール性を実現するにはどうすればよいですか?