gpt4 book ai didi

python - 当同一个项目中有多个应用程序时,如何在 django 中设置 url?

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:38 25 4
gpt4 key购买 nike

我是 django 的新手。我正在尝试设置 URL。我在“mysite”项目下有 2 个应用程序。在 mysite 的 urls.py 中,我包含了来自 2 个应用程序(称为“登录”和“组织”)的网址

我的网站/urls.py

urlpatterns = [
url(r'^login/', include('login.urls')),
url(r'^org/', include('org.urls')),
]

登录/urls.py

app_name = 'login'
urlpatterns = [
url(r'^signup/$', login_views.signup, name='signup'),
]

组织/urls.py

app_name = 'org'
urlpatterns = [
url(r'^organizations/add/$', views.addorg, name='addorg'),
]

以这种方式设置后,我的站点 URL 将变为以下内容:

site.com/login/login/signup
site.com/org/organizations/add

我希望 URL 如下所示。

site.com/login/signup
site.com/organizations/add

如何让“包含”起作用?如果我将 mysite/urls.py 更改为以下内容,它会起作用吗?

urlpatterns = [
url(r'^$', include('login.urls')),
url(r'^$', include('org.urls')),
]

当有多个应用程序时,是否有更好的设置 URL 的方法?

谢谢

最佳答案

在您描述的设置中,登录 URL 不是 'site.com/login/login/signup',而是 'site.com/login/signup'。第二个 'login/' 从哪里来?

您建议的解决方案,

urlpatterns = [
url(r'^$', include('login.urls')),
url(r'^$', include('org.urls')),
]

如果没有在两个应用程序中出现相同的 url,则通常会起作用。但这并不理想,因为登录 urs 中的所有模式都将针对所有请求进行不必要的尝试。

因此,您可能需要考虑删除 specific_app.urls 内部前缀,尤其是当这些前缀对于应用的所有 View 都相同时。将其留给任何将使用并包含该应用程序(此处:mysite.urls)的人,他们希望将其包含在该应用程序的路径下。

# login/urls.py
urlpatterns = [
# no 'login' prefix here. Includers know which app
# they are including and how they want do that.
url(r'^signup/$', login_views.signup, name='signup'),
]

# org/urls.py
urlpatterns = [
# same: no 'org' prefix
url(r'^add/$', views.addorg, name='addorg'),
]

# mysite.urls.py
urlpatterns = [
url(r'^login/$', include('login.urls')),
url(r'^organizations/$', include('org.urls')),
]

生成的 url 将是:

site.com/login/signup
site.com/organizations/add

关于python - 当同一个项目中有多个应用程序时,如何在 django 中设置 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43417123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com