【问题标题】:How do I make Django write the links to pages correctly?如何让 Django 正确写入页面链接?
【发布时间】:2021-11-06 21:16:35
【问题描述】:

我已经建立了我的 Django 项目网站,它是一个迷宫生成器,有一个导航栏,其中的按钮链接到我制作的其他页面。

例如,样式页面的目录就是/style,所以它会弹出引用样式的页面,然后如果我点击导航栏上的主页按钮,它会转到/home。

但是,当我转到仅引用一个数字(例如 3)的各个迷宫页面时,如果我单击导航栏按钮返回主页而不是转到 http://127.0.0.1:8000/home,它会尝试转到 http://127.0.0.1:8000/3/home,这不会'不存在。

有没有办法改变 Django 处理链接的方式以删除它之前的目录。

navbar html code

urls page in django

【问题讨论】:

    标签: html css django


    【解决方案1】:

    假设您的urls.py 设置正确,您可以像这样使用{% url %} 模板标签:

    <a href="{% url 'urlname' %}">...</a>
    

    Django 会自动将其替换为名为@9​​87654324@ 的实际 URL。为此,您的 urls.py 应该具有如下定义的路径:

    path("some/url/here", views.my_view_function, name="urlname")
    

    name 属性是这里的重要部分。

    通过写href="3",您只是告诉浏览器寻找https://example.com/whatever/the/current/url/is/3,换句话说,它相对到当前位置。
    要使其绝对化,您必须以/ 开头(这将使URL 相对于当前域,例如href="3" 将导致https://example.com/3)或完整写入,包括https://example.com/ 部分,这将导致指向的确切位置。

    当你使用{% url %} 标签时,Django 会自动处理这个问题。

    【讨论】:

    • 谢谢你,先生,非常爱你x
    • @comalley_ 如果解决了您的问题,请记得将答案标记为已接受。
    猜你喜欢
    • 2023-03-31
    • 2020-01-07
    • 2014-02-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多