我正在尝试使用一个应用程序来满足多个url路径。也就是说,我希望url /blog/
和{
# /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
为了使代码更干净,我最后将所有这些分解为多个模型和视图文件,但是上面的示例没有考虑到反向url查找之类的事情,它破坏了我所有的模板{% url %}
调用。在
最初,我的博客、工作、活动、竞赛等等都在它们自己的应用程序中,但它们的功能都是如此相似,以至于让它这样没有意义,所以我试图将它们结合起来。。。就这样发生了。你看到那些“NOIDEA detail”和“NOIDEA community”的url名称了吗?是的,我不知道在那里用什么:-(
我觉得不错。如果您想要反向查找,只需为每个url格式使用不同的反向名称,即使它们最终指向同一个视图。在
可以有多个模块定义url。在
myapp/urls.py
中可以有/blog/
的url,在myapp/job_urls.py
中可以有/job/
的url。或者在urls
子包中有两个模块。在或者,您可以手动为url定义添加前缀:
然后安装为:
^{pr2}$但就个人而言,我会选择更多的restfulurl定义。例如
blog/(?P<post_id>\d+)/edit/$
。在相关问题 更多 >
编程相关推荐