【问题标题】:Python Django urls not working how they should?Python Django url 无法正常工作?
【发布时间】:2019-02-15 05:23:37
【问题描述】:
from django.contrib import admin
from django.urls import path

import main.views
urlpatterns = [
    path('', main.views.index, name="index"),
    path('story/', main.views.story, name="story"),
    path('haxs/', main.views.haxs, name="haxs"),
    path('contact/', main.views.contact, name="contact"),
    path('admin/', admin.site.urls),
]

.

<li class="nav-item"><a class="nav-link" href="/">home</a></li>
<li class="nav-item"><a class="nav-link" href="story/">our story</a></li>
<li class="nav-item"><a class="nav-link" href="haxs/">haxs</a></li>
<li class="nav-item"><a class="nav-link" href="contact/">contact us</a></li>

我正在开发一个 python django 网站,但我的网址无法正常工作。我已经包含了我的 urls.py 和每个页面上相同的导航链接。从家里我可以到所有其他页面,从其他页面我可以回到家。

我的问题是当我从例如:haxs 联系它不起作用并且代码 url 变为 "http://127.0.0.1:8000/haxs/story/" 而它应该只是 "http://127.0.0.1:8000/story/" 时。就像我们的故事/haxs/contact 一样,我不能在它们之间切换。我该如何解决这个问题?

【问题讨论】:

    标签: python django django-urls


    【解决方案1】:

    只需像这样更改 href 以与服务器关联:

    <a href={℅ url 'name of urls defined' ℅}>pagename</a>
    

    {℅ url 'urls' ℅} 是用于定义应用程序 url 的 django url 变量!

    【讨论】:

      【解决方案2】:

      添加到@neverwalkaloner 答案,我建议您在您的网址中添加一个命名空间。它有助于提高易读性,因为您可以准确地识别从哪个应用程序调用该 URL。

      我将假设您的应用名称是 main。

      from django.contrib import admin
      from django.urls import path
      
      import main.views
      
          app_name = 'main' 
          urlpatterns = [
              path('', main.views.index, name="index"),
              path('story/', main.views.story, name="story"),
              path('haxs/', main.views.haxs, name="haxs"),
              path('contact/', main.views.contact, name="contact"),
              path('admin/', admin.site.urls),
          ]
      
          <li class="nav-item"><a class="nav-link" href="{% url 'main:story' %}">our story</a></li>
      

      希望这会有所帮助!

      【讨论】:

      • 这似乎对我不起作用,但上面的方法对我有用,但确实如此,尽管我很感激你的帮助:)
      • 这很奇怪,你不应该有问题。这是我个人一直在做的事情,因为它有一种更干净的感觉。绝对值得研究。生病提供链接! docs.djangoproject.com/en/2.1/topics/http/urls/#url-namespaces
      【解决方案3】:

      您可以通过在 url 前面加上 / 来简单地修复它:

      <li class="nav-item"><a class="nav-link" href="/story/">our story</a></li>
      

      但最好使用Django的named url feature

      <li class="nav-item"><a class="nav-link" href="{% url 'story' %}">our story</a></li>
      

      【讨论】:

      • 啊哈!这比你更有效,我只需要添加一个正斜杠就很烦人,尽管我使用的是 Django 方式,因为它更适合整体。非常感谢:))
      猜你喜欢
      • 1970-01-01
      • 2017-09-12
      • 2016-01-19
      • 2013-10-21
      • 2014-03-07
      • 2013-02-25
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多