Python Django 网址无法正常工作?

Python Django urls not working how they should?

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 网站上工作,但我的 url 无法正常工作。我已经包含了我的 urls.py 和每个页面上相同的导航链接。从家里我可以转到所有其他页面,从其他页面我可以回到家里。

我的问题是当我从例如:haxs 联系它不起作用并且代码 url 变成“http://127.0.0.1:8000/haxs/story/" when it should just be "http://127.0.0.1:8000/story/”。就像我们的 story/haxs/contact 一样,我无法在它们之间切换页面。我该如何解决这个问题?

您可以简单地通过在 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>

添加到@neverwalkaloner 的回答中,我建议向您的 url 添加一个命名空间。它有助于提高易读性,因为您可以准确识别您从哪个应用调用 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>

希望对您有所帮助!

只需更改 hrefs 即可与服务器关联,如下所示:

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

{℅ url 'urls' ℅} 是定义应用程序 urls!

的 django url 变量