【问题标题】:NoReverseMatch Error in Django project: Bootstrap link causing problem? Can't see how or why thoughDjango 项目中的 NoReverseMatch 错误:引导链接导致问题?看不到如何或为什么
【发布时间】:2021-07-31 16:29:19
【问题描述】:

我真的很困惑如何解决这个问题。我之前处理过 NoReverseMatch 错误,我知道这通常是 URL 路径或views.py 中与之相关的函数的问题,但是我尝试渲染的这个特定页面不断返回 NoReverseMatch 说有一个我的 layout.html 模板中包含我指向 Bootstrap 的链接的行就是问题所在。我试过编辑这条线,但没有用。我已经检查了 views.py 中的 URL 路径和相关函数,但我看不到任何提示错误的内容。这就是我的意思...

错误信息

Reverse for 'register' not found. 'register' is not a valid view function or pattern name.

Error during template rendering
In template C:\Users\Leigh\Desktop\Coursework\CS50Web\project4\network\templates\network\layout.html, error at line 7

Reverse for 'register' not found. 'register' is not a valid view function or pattern name.

这是第 7 行的图片。

正如我所提到的,我已经检查了 views.py 中的第 160 行,它调用了 urls.py 中的 URL。

这里是 urls.py

from django.urls import path

from . import views

app_name = "network"

urlpatterns = [
    path("", views.index, name="index"),
    path("login", views.login_view, name="login"),
    path("logout", views.logout_view, name="logout"),
    path("register", views.register, name="register"),
    path("post", views.newpost, name="newpost"),
    path("post/<int:post_id>", views.post, name="post"),
    path("user/<int:user_id>", views.user, name="user"),
    path("following", views.following, name="following")
    
]

我真的很茫然。我看不到任何会导致 NoReverseMatch 的东西。尽管 Django 说没有路径、有效的视图/函数/模式名称等,但“register.html”肯定存在。 有人在 Django 上对这类事情持枪吗?如有任何帮助,我将不胜感激。

【问题讨论】:

  • 您是否在urls.py 中使用 includenamespace=".​​."
  • 嗨@AliAref 你到底是什么意思bu包含命名空间“..”?
  • 尝试使用your_app_name:register 而不是只反向使用register。作为return reverse("app_name:register")
  • @AliAref 你的意思是在 url 路径中吗?
  • @AliAref 刚刚试了一下。它现在返回一个新的 AttributeError 。 “str”对象没有属性“get”

标签: python django django-urls


【解决方案1】:

bootstrap没有问题,一个可能的错误是你没有在url中提到app_name。

你的 urls.py:

app_name = "network"

    urlpatterns = [
        path("", views.index, name="index"),
        path("login", views.login_view, name="login"),
        path("logout", views.logout_view, name="logout"),
        path("register", views.register, name="register"),
        path("post", views.newpost, name="newpost"),
        path("post/<int:post_id>", views.post, name="post"),
        path("user/<int:user_id>", views.user, name="user"),
        path("following", views.following, name="following")
        
    ]

那么html文件应该有:

correct: {% url 'network:register' %}
incorrect {% url 'register'%}

我们只是将引导程序链接到我们的 html 文件,因此它不会干扰 url。

【讨论】:

    猜你喜欢
    • 2018-06-09
    • 2011-06-25
    • 2020-06-15
    • 2017-10-07
    • 2021-04-22
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多