0

複数のアプリで複数回使用されるブログ アプリを作成しようとしています。ただし、ビュー内の 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」には、期待される正確な値が含まれています。

ここで髪を伸ばします!求めているモジュール性を実現するにはどうすればよいですか?

4

1 に答える 1