反转 {% url %}:未找到反转结果 '"'。'' 不是有效的视图函数或模式名称。

3

我已经卡在这个问题上一段时间了,似乎无法修复错误。我在视图中没有使用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”的反向引用。 'charge'不是一个有效的视图函数或模式名称。


这已经是我拥有的,但它不起作用。bookings:charge其中一个是应用程序命名空间,第二个是视图名称。 - GRS
你正在使用哪个版本的 Django? - Abdul Niyas P M
@ABDULNIYASPM 1.11.3 - GRS
即使更新到2.0版本,仍然出现相同的错误。 - GRS
@VipinMohan 是的,我不确定出了什么问题。 - GRS
显示剩余4条评论
1个回答

3

如果您想以这种方式使用URL标签,则需要在urls.py中添加一个命名空间namespace

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

那么在模板中,您可以使用{% url 'bookings:charge' %}进行调用。


结果是我在模板中有多个表单实例,这导致了错误。其中一个带有 bookings:charge 和另一个带有 charge。移除其中一个修复了此问题。我会将其标记为正确的。 - GRS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接