【问题标题】:django two apps with same urls in each url's.py filedjango 两个应用程序在每个 url 的 .py 文件中具有相同的 url
【发布时间】:2016-09-26 06:16:35
【问题描述】:

我的 django 项目中有两个应用程序,一个是“home”,另一个是“administrator”。我正在将主页应用程序用于站点的前端,将管理员应用程序用于管理面板,用于访问前端和管理面板的 url 分别是:-

www.domainname.com/home
www.domainname.com/administrator

主 urls.py 文件是:-

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^home/', include('home.urls')),
    url(r'^administrator/', include('administrator.urls'))
]

首页的 urls.py 文件是:-

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^sport$', views.sport, name='sport'),
    url(r'^register$', views.signup_signin, name='register'),
    url(r'^login$', views.login, name='login'),
    url(r'^signup$', views.signup, name='signup'),
    url(r'^registered-successfully$', views.registered_successfully, name='registered-successfully'),
    url(r'^logout$', views.logout_view, name='logout'),
    url(r'^dashboard$', views.dashboard, name='dashboard'),
    url(r'^create-new-event$', views.create_new_event, name='create-new-event'),
    url(r'^help$', views.help, name='help'),
    url(r'^account-settings$', views.account_settings, name='account-settings')
]

管理员的 urls.py 文件是:-

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^logout$', views.logout, name='logout'),
    url(r'^dashboard$', views.dashboard, name='dashboard'),
    url(r'^profile$', views.profile, name='profile'),
    url(r'^edit-profile$', views.edit_profile, name='edit-profile'),
    url(r'^check-password$', views.check_password, name='check-password'),
    url(r'^help$', views.faq_management, name='help')
]

您可以检查两个应用程序的文件中是否有一些共同的 url,例如索引、仪表板、注销帮助。

如果我在 href 中链接这些 url,就会产生问题,例如,如果我在前端使用链接“帮助”url

<a href="{% url 'help' %}" >

它会尝试将我重定向到管理面板的帮助 URL,如果我更改主 urls.py 文件中的应用程序顺序,反之亦然会出现问题。

【问题讨论】:

    标签: python django


    【解决方案1】:

    您可以尝试将命名空间添加到您的网址

    urlpatterns = [
        url(r'^home/', include('home.urls', namespace='home')),
        url(r'^administrator/', include('administrator.urls', namespace='admin'))
    ]
    

    然后你可以像这样访问它们:

    <a href="{% url 'home:help' %}" >
    <a href="{% url 'admin:help' %}" >
    

    【讨论】:

    • 使用命名空间我必须在我的完整项目中更改链接,我知道这可以解决我的问题,但是还有其他解决方案吗?
    • 对不起,我不知道还有什么办法。
    • 也许您可以只为其中一种 url 模式添加命名空间。这至少会减少数量。您必须更改网址的地方。
    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 2012-02-22
    • 2012-10-19
    • 2015-05-26
    • 2017-04-25
    • 2017-06-04
    • 2019-05-09
    • 2023-04-04
    相关资源
    最近更新 更多