Django主页URL呈现为不同的URL

时间:2013-06-17 18:19:04

标签: python html django django-templates django-urls

所以,我有一个简单的主页,用于我正在研究的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配置中,但我可能是错的。

请和谢谢

2 个答案:

答案 0 :(得分:0)

您包含两次相同的网址。你的主要urls.py应该是:

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

然后您的网址将按预期解决/撤消。

答案 1 :(得分:0)

这是因为您在两个相对路径下包含相同的文件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
)