【问题标题】:Django home page URL being rendered as a different URLDjango 主页 URL 被呈现为不同的 URL
【发布时间】:2013-06-13 19:07:30
【问题描述】:

所以,我有一个我正在处理的 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 配置中,但我可能是错的。

请和谢谢你

【问题讨论】:

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


    【解决方案1】:

    发生这种情况是因为您在两个相对路径下包含相同的文件app.urls,即/ 和/login。因此,right 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
    )
    

    【讨论】:

      【解决方案2】:

      您包含两次相同的 URL 模式。您的主要 urls.py 应该是:

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

      然后您的网址将按预期解析/反向。

      【讨论】:

      • 做得很完美!谢谢一百万 =)
      猜你喜欢
      • 2017-11-14
      • 2011-02-05
      • 2021-09-05
      • 1970-01-01
      • 2019-01-03
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      相关资源
      最近更新 更多