所以,我有一个简单的主页,用于我正在研究的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配置中,但我可能是错的。
请和谢谢
答案 0 :(得分:0)
您包含两次相同的网址。你的主要urls.py应该是:
urlpatterns = patterns('',
url(r'', include('app.urls')),
)
然后您的网址将按预期解决/撤消。
答案 1 :(得分:0)
这是因为您在两个相对路径下包含相同的文件app.urls
,即/
和/login
。因此,右 url名称定义只是被覆盖。
要避免这种情况,请不要在两个相对路径下包含相同的url配置文件。因此,在您的情况下,您应该创建一个新的url配置文件(例如login.urls
),将登录相关的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
)