我是django的新手。我正在尝试设置网址。我在一个项目下有2个应用程序' mysite'。在mysls的urls.py中,我已经包含了2个应用中的网址(称为'登录'以及' org')
的mysite / urls.py
console.log
登录/ 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'),
]
通过这种方式设置,我的网站网址变为以下内容:
app_name = 'org'
urlpatterns = [
url(r'^organizations/add/$', views.addorg, name='addorg'),
]
我想要这些网址,以便它们如下所示。
site.com/login/login/signup
site.com/org/organizations/add
如何获得'包含'上班?如果我将mysite / urls.py更改为以下内容,它会起作用吗?
site.com/login/signup
site.com/organizations/add
当有多个应用时,是否有更好的方法来设置网址?
由于
答案 0 :(得分:2)
<强> mysite的/ 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'),
]
如果你以这种方式放置你的网址......
您的注册网址将为site.com/login/signup
公式是 -
[您的网站域 + url in main_project / urls.py + 网址:any_app / urls.py ]
所以要纠正你的组织网址 - 你应该将 my_site / urls.py 重构为 -
urlpatterns = [
url(r'^login/', include('login.urls')),
url(r'^organizations/', include('org.urls')),
]
并在您的 orgs / urls.py 中
app_name = 'org'
urlpatterns = [
url(r'^add/$', views.addorg, name='addorg'),
]
我希望它有所帮助。
答案 1 :(得分:0)
在您描述的设置中,登录网址不是'site.com/login/login/signup'
,而是'site.com/login/signup'
。第二个'login/'
来自哪里?
您建议的解决方案
urlpatterns = [
url(r'^$', include('login.urls')),
url(r'^$', include('org.urls')),
]
如果两个应用中没有相同的网址,通常会有用。但这并不理想,因为所有请求都会不必要地尝试登录urs中的所有模式。
因此,您可能需要考虑删除specific_app.urls
内部前缀,尤其是如果这些前缀对于应用的所有视图都相同。留给任何人使用并包含该应用程序(此处为: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')),
]
生成的网址将是:
site.com/login/signup
site.com/organizations/add