包含收藏按钮后的 NoReverseMatch
Posted
技术标签:
【中文标题】包含收藏按钮后的 NoReverseMatch【英文标题】:NoReverseMatch after include Favorite button 【发布时间】:2019-04-05 03:01:27 【问题描述】:首先感谢您的关注。 我对 django 框架很陌生,并且遵循教程。虽然当我尝试在我的 detail.html 中包含收藏夹的输入按钮时,我得到了这个错误:
模板渲染期间出错 在模板 C:\Users\leo8\Desktop\Lucas\c2view03\webdeve\templates\detail.html 中,第 8 行出错
找不到带有参数“(”,)”的“收藏夹”。尝试了 1 种模式:
['webdeve/(?P[0-9]+)/favorites/$']
1 <img src=" dream.imagem ">
2 <h2> dream.titulo dream.objetivo </h2>
3
4 % if error_message %
5 <p><strong> error_message </strong></p>
6 % endif %
7
8 <form action="% url 'webdeve:favorites' Dreams.id %" method="post">
9 % csrf_token %
10 % for wich in dream.wich_set.all %
11 <input type="radio" id="wich forloop.counter " name="wich" value=" titulo.id "/>
12 <label for="wich forloop.counter ">
13 wich.make
14 % if wich.favorites %
15 <img src="https://cdn2.iconfinder.com/data/icons/aspneticons_v1.0_Nov2006/add_16x16.gif" />
16 % endif %
17 </label><br>
18 % endfor %
这些是我的看法:
from .models import Dreams, Wich
from django.shortcuts import render, get_object_or_404
app_name = 'webdeve'
def index(request):
all_dreams = Dreams.objects.all()
contexto = 'all_dreams': all_dreams
return render(request, 'index.html', contexto)
def detail(request, Dreams_id):
#dream = Dreams.objects.get(pk=Dreams_id)
dream = get_object_or_404(Dreams, pk=Dreams_id)
return render(request, 'detail.html', 'dream': dream)
def favorites(request, Dreams_id):
dream = get_object_or_404(Dreams, pk=Dreams_id)
try:
selected_wich = dream.wich_set.get(pk=request.POST['make'])
except (KeyError, Wich.DoesNotExist):
return render(request, 'detail.html',
'dream': dream,
'error_message': "no wich selected"
)
else:
selected_wich.favorites = True
selected_wich.save()
return render(request, 'detail.html', 'dream': dream)
和 myapp.urls
from django.conf.urls import url
from webdeve import views
app_name = 'webdeve'
# Dreams
urlpatterns = [
url(r'^$', views.index, name='index'),
# Dreams/detail
url(r'^(?P<Dreams_id>[0-9]+)/$', views.detail, name='detail'),
# Dreams/detail/favoriteS
url(r'^(?P<Dreams_id>[0-9]+)/favorites/$', views.favorites, name='favorites'),
]
【问题讨论】:
【参考方案1】:您永远不会从您的view
向您的form
发送Dreams
,因此Dreams.id
不存在。在您的模板中尝试dream.id
。
【讨论】:
dream = get_object_or_404(Dreams, pk=Dreams_id) 和:return render(request, 'detail.html', 'dream': dream) 怎么样Dream != dream
。 Python 区分大小写。上下文引号内的内容是模板中使用的名称。
是的,它成功了,非常感谢,我遇到了一个没有找到的问题,但我会尝试解决它。再次非常感谢你,卡尔;
同样的问题。您不会在上下文中发送“wich”以上是关于包含收藏按钮后的 NoReverseMatch的主要内容,如果未能解决你的问题,请参考以下文章