1

所以,我有一个我正在处理的 django 项目的简单主页。左上角是网站的标志。在我的模板中,我有以下代码:

<a href="{% url "home" %}">Company Name</a>

在我的根 urls.py 中,我有这个:

from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
   url(r'^$', include('app.urls')),          # The main app
   url(r'^login/$', include('app.urls')),     # The login page
)

在我的 app/urls.py 我有这个:

from django.conf.urls import patterns, url
from app import views

urlpatterns = patterns('',
      url(r'^$', views.index, name='home'),             # The homepage of the website
      url(r'^login/$', views.loginView, name='login'),  # The login page of the website
)

现在你会认为(或者至少我会)当索引页面被渲染时,它会生成 html<a href="/">Company Name</a>或类似的东西。相反,我得到的是<a href="/login/">Company Name</a>.

那么,为什么会发生呢?显然,这是不受欢迎的行为。我几乎可以肯定问题出在 url 配置中,但我可能是错的。

谢谢,麻烦您了

4

2 回答 2

1

发生这种情况是因为您app.urls 在两个相对路径下包含同一个文件,即//login。因此,正确的url 名称定义将被覆盖。

为避免这种情况,请不要在两个相对路径下包含相同的 url 配置文件。因此,在您的情况下,您应该创建一个新的 url 配置文件(例如login.urls),将与登录相关的 url 定义移动到该新文件并将根 url 配置替换为

from django.conf.urls import patterns, url
from app import views

urlpatterns = patterns('',
    url(r'^$', include('app.urls')),          # The main app
    url(r'^login/$', include('login.urls')),     # The login page
)
于 2013-06-17T18:24:54.807 回答
0

您包含相同的 URLpatterns 两次。您的主要 urls.py 应该只是:

urlpatterns = patterns('',
   url(r'', include('app.urls')),
)

然后您的 URL 将按预期解析/反转。

于 2013-06-17T18:24:36.667 回答