回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试使用一个应用程序来满足多个url路径。也就是说,我希望url <code>/blog/</code>和{<cd2>}使用相同的应用程序,但视图不同。我相信有很多方法可以做到这一点,但没有一种是非常干净的。这就是我现在要做的</p>
<pre><code># /urls.py
urlpatterns = patterns("",
(r"^(blog|job)/", include("myproject.myapp.urls")),
)
# /myapp/urls.py
urlpatterns = patterns("myproject.myapp.views",
(r"^(?P<id>\d+)/edit/$", "myproject.myapp.views.edit"),
(r"^(?P<id>\d+)/delete/$", "myproject.myapp.views.delete"),
(r"^(?P<id>\d+)/update/$", "myproject.myapp.views.update"),
(r"^insert/$", "myproject.myapp.views.insert"),
)
urlpatterns += patterns("",
(r"^(?P<object_id>\d+)/$", "django.views.generic.list_detail.object_detail", info_dict, "NOIDEA-detail"),
(r"^/$", "django.views.generic.list_detail.object_list", info_dict, "NOIDEA-community"),
)
# /myapp/views.py
def edit(request, type, id):
if (type == "blog"):
editBlog(request, id)
else (type == "job")
editJob(request, id)
def editBlog(request, id):
# some code
def editJob(request, id):
# some code
</code></pre>
<p>为了使代码更干净,我最后将所有这些分解为多个模型和视图文件,但是上面的示例没有考虑到反向url查找之类的事情,它破坏了我所有的模板<code>{% url %}</code>调用。在</p>
<p>最初,我的博客、工作、活动、竞赛等等都在它们自己的应用程序中,但它们的功能都是如此相似,以至于让它这样没有意义,所以我试图将它们结合起来。。。就这样发生了。你看到那些“NOIDEA detail”和“NOIDEA community”的url名称了吗?是的,我不知道在那里用什么:-(</p>