为什么我的Django url重定向到错误的URL?

时间:2018-03-20 17:25:05

标签: django

我通过名称visit,main和startup在项目中有三个django应用程序。在主基本模板中,我在导航栏上有一个链接,用于将用户重定向到启动应用程序中的索引模板。 (注意我的名字索引有两个网址,但我使用的是命名空间)。 这是我的主要base.html:

.txt

这些是网站主urls.py

<li class="nav-item">
            <a class="nav-link" href = '{% url 'startup:index'%}'>Startup</a>
          </li>

startup.urls的网址如下:

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

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('visit.urls')),
    url(r'^', include('main.urls')),
    url(r'^', include('startup.urls')),

]
          <li class="nav-item">
            <a class="nav-link" href="#">Products</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">VCN</a>
          </li>

链接不是将我重定向到此,而是将我带到访问应用程序的索引(它也具有相同的URL名称但名称空间不同)。 visit.urls:

from django.conf.urls import url
from . import views
app_name = 'startup'

urlpatterns = [
    url(r'^$', views.index, name = 'index'),
]

我在这做错了什么?有没有其他方法可以通过链接将用户带到另一个应用程序?

1 个答案:

答案 0 :(得分:3)

您有多个URLconf包含在基本路径('^')中,并包含映射到空路径('^$')的路径。这意味着startup.index和visit.index的完整URL是相同的 - 空路径'/'。这可能无法奏效。

您需要为每个URL设置唯一的路径,这通常通过在特定前缀下包含URLconf来完成。例如:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('main.urls')),
    url(r'^visit/', include('visit.urls')),
    url(r'^startup/', include('startup.urls')),
]