【发布时间】:2013-07-13 20:13:52
【问题描述】:
我正在尝试创建一个可供多个应用多次使用的博客应用。但是,无论是 url 模板标签还是视图中的 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'),
...
)
blog/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/新
/test2/blog/new
/test2/articles/新
/test3/blog/new
/test3/articles/新
对于“preview_url”上下文变量和锚标记中的href - “test1/blog/new/preview”,我总是得到相同的结果。然而,上下文变量“current_namespace”包含预期的准确值。
我要拔头发了!如何实现我所追求的模块化?
【问题讨论】:
标签: django django-templates django-views django-urls