【问题标题】:Reverse {% url %}: Reverse for '"' not found. '' is not a valid view function or pattern nameReverse {% url %}: Reverse for '"' not found. '' 不是有效的视图函数或模式名称
【发布时间】:2018-04-07 16:25:03
【问题描述】:

我已经被这个问题困扰了一段时间,似乎无法修复错误。我不在视图中的任何地方使用reverse()。

urls.py

urlpatterns = [
    url(r"^book/", include("bookings.urls")),
]

bookings.urls.py

from django.conf.urls import url
from . import views

app_name = 'bookings'

urlpatterns = [
    url(r'^charge/$', views.charge, name='charge'),
    url(r'^booking/$', views.booking, name='booking'),
]

views.py

def booking(request):
     # some code
     render(request, 'bookings/template.html', {'listing': listing,})
def charge(request):
    # some code

template.html

<form action="{% url 'bookings:charge' %}" method="post">

我尝试了所有不同的更改和命名空间,例如尝试仅使用 charge、urls.py 等中的不同命名空间。

当我渲染 book/booking/ 时,我收到以下错误:

未找到“收费”的反向。 'charge' 不是一个有效的视图函数 或模式名称。

【问题讨论】:

  • 这已经是我拥有的,但它不起作用。 bookings:charge 其中一个是应用命名空间,第二个是视图名称。
  • 你使用的是哪个版本的 django?
  • @ABDULNIYASPM 1.11.3
  • 即使更新到 2.0,同样的错误。

标签: python django


【解决方案1】:

如果你想以这种方式使用 URL 标签,你需要在你的 urls.py 中添加一个namespace。

url(r"^book/", include("bookings.urls", namespace="bookings")),

然后你可以在你的模板中添加{% url 'bookings:charge' %}。

【讨论】:

  • 原来我在模板中有多个表单实例,这导致了错误。一个是bookings:charge,另一个是charge。删除一个解决了这个问题。我将标记为正确
猜你喜欢
  • 2020-05-31
  • 2021-06-23
  • 2018-02-05
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 2020-01-07
  • 1970-01-01
相关资源
最近更新 更多