Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中使用一个应用程序满足多个URL_Python_Django_Django Urls - Fatal编程技术网

Python 如何在Django中使用一个应用程序满足多个URL

Python 如何在Django中使用一个应用程序满足多个URL,python,django,django-urls,Python,Django,Django Urls,我正在尝试使用一个应用程序来满足多个url路径。也就是说,我希望url/blog/和/job/使用相同的应用程序,但视图不同。我相信有很多方法可以做到这一点,但没有一种看起来很干净。这就是我现在正在做的 # /urls.py urlpatterns = patterns("", (r"^(blog|job)/", include("myproject.myapp.urls")), ) # /myapp/urls.py urlpatterns = patterns("myproject.

我正在尝试使用一个应用程序来满足多个url路径。也就是说,我希望url
/blog/
/job/
使用相同的应用程序,但视图不同。我相信有很多方法可以做到这一点,但没有一种看起来很干净。这就是我现在正在做的

# /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.py
urlpatterns=模式(“”,
(r“^(blog | job)/”,包括(“myproject.myapp.url”),
)
#/myapp/url.py
urlpatterns=模式(“myproject.myapp.views”,
(r“^(?P\d+)/edit/$”,“myproject.myapp.views.edit”),
(r“^(?P\d+)/delete/$”,“myproject.myapp.views.delete”),
(r“^(?P\d+)/update/$”,“myproject.myapp.views.update”),
(r“^insert/$”,“myproject.myapp.views.insert”),
)
urlpatterns+=模式(“”,
(r“^(?P\d+/$”,“django.views.generic.list\u detail.object\u detail”,信息目录,“NOIDEA detail”),
(r“^/$”,“django.views.generic.list\u detail.object\u list”,信息目录,“NOIDEA社区”),
)
#/myapp/views.py
def编辑(请求、类型、id):
如果(类型==“博客”):
editBlog(请求,id)
其他(类型=“作业”)
编辑作业(请求,id)
def editBlog(请求,id):
#一些代码
def editJob(请求,id):
#一些代码
我最终将所有这些分解为多个模型和视图文件,以使代码更清晰,但上面的示例没有考虑反向url查找之类的问题,这会破坏我所有的模板
{%url%}
调用


最初,我的博客、工作、活动、竞赛等都生活在自己的应用程序中,但它们的所有功能都非常相似,所以我试图将它们结合起来。。。事情就这样发生了。你在我的通用视图中看到那些“NOIDEA detail”和“NOIDEA community”url名称了吗?是的,我不知道在那里用什么:-(

在我看来很不错。如果你想要反向查找,只要对每个url格式有一个不同的反向名称,即使它们最终指向同一个视图。

你可以有多个模块定义url。你可以在
myapp/URLs.py中有
/blog/
url,在
myapp/job\URLs.py中有
/job/
url>。或者在
URL
子包中可以有两个模块

或者,您可以手动为url定义添加前缀:

urlpatterns = patterns("myproject.myapp.views",
    (r"^jobs/(?P<id>\d+)/edit/$",    "myproject.myapp.views.edit"),
    (r"^jobs/(?P<id>\d+)/delete/$",  "myproject.myapp.views.delete"),
    (r"^jobs/(?P<id>\d+)/update/$",  "myproject.myapp.views.update"),
    (r"^jobs/insert/$",              "myproject.myapp.views.insert"),
)

urlpatterns += patterns("",
    (r"^blog/(?P<object_id>\d+)/$",  "django.views.generic.list_detail.object_detail", info_dict, "NOIDEA-detail"),
    (r"^blog/$",                    "django.views.generic.list_detail.object_list",   info_dict, "NOIDEA-community"),
)
就我个人而言,我会选择更多的RESTful URL定义,比如
blog/(?p\d+)/edit/$

urlpatterns = patterns("",
    (r"", include("myapp.urls")),
)