我通过名称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'),
]
我在这做错了什么?有没有其他方法可以通过链接将用户带到另一个应用程序?
答案 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')),
]