模板渲染期间的 Django 错误。找不到带有参数“(”,)'和关键字参数''的'name'的反向
Posted
技术标签:
【中文标题】模板渲染期间的 Django 错误。找不到带有参数“(”,)\'和关键字参数\'\'的\'name\'的反向【英文标题】:Django error during template rendering. Reverse for 'name' with arguments '(",)' and keyword arguments '' not found模板渲染期间的 Django 错误。找不到带有参数“(”,)'和关键字参数''的'name'的反向 【发布时间】:2016-08-29 00:46:35 【问题描述】:我正在处理我的第一个 Django 项目,现在我遇到了一些我完全不理解的错误!昨天我创建了 2 个表单:其中一个正在工作,而第二个表单中的数据没有保存到数据库中。我试图解决这个问题,但现在它们都不起作用,甚至我的一个旧模板也有同样的问题。你能告诉我我的错误是什么以及如何解决它们吗?
这是我的views.py的一部分:
def listing(request):
users_list = Person.objects.all()
paginator = Paginator(users_list, 14)
page = request.GET.get('page')
try:
users = paginator.page(page)
except PageNotAnInteger:
users = paginator.page(1)
except EmptyPage:
users = paginator.page(paginator.num_pages)
return render(request, 'friends_plans/list.html', "users": users)
def add_wish_list(request):
if request.method == 'POST':
form = Wish_listForm(request.POST)
if form.is_valid():
newform = form.save(commit=False)
newform.person = request.user
newform.save()
else:
print form.errors
else:
form = Wish_listForm()
return render(request, 'friends_plans/add_wish_list.html', 'form': form)
def add_comment(request, wish_list_id):
person = request.user
wish_list = get_object_or_404(Wish_list, pk=wish_list_id)
if request.method == 'POST':
form = Comment_to_wish_listForm(request.POST)
if form.is_valid():
newform=form.save(commit=False)
newform.person = request.user
newform.comment_to = wish_list
wish_list.person = person
newform.save()
else:
print form.errors
else:
form = Comment_to_wish_listForm()
context_dict = 'form': form, 'wish_list': wish_list
return render(request, 'friends_plans/add_comment.html', 'context_dict': context_dict)
这是我的 urls.py:
app_name = 'friends_plans'
urlpatterns = [
url(r'^$', views.index, name='index'), # start page
url(r'^users/$', views.listing, name='listing'),
url(r'^(?P<person_id>[0-9]+)/wish_list/$', views.wish_list, name='wish_list'),
url(r'^(?P<person_id>[0-9]+)/$', views.user, name='user'),
url(r'^(?P<person_id>[0-9]+)/(?P<day_id>[0-9]+)/$', views.day, name='day'),
url(r'^add_wish_list/$', views.add_wish_list, name='add_wish_list'),
url(r'^(?P<wish_list_id>[0-9]+)/comment/$', views.comment, name='comment'),
url(r'^(?P<wish_list_id>[0-9]+)/comment/add/$', views.add_comment, name='add_comment'),
]
这是 list.html:
% extends 'friends_plans/base.html' %
% load staticfiles %
% block title % Users % endblock %
% block content %
<div id ="left">
<div id="toptitle"> Friends' Plans members:</div>
<table class="table">
<thead>
<tr>
<th>Photo</th>
<th>Name</th>
<th>Occupation</th>
<th>Days</th>
<th>Places</th>
</tr>
</thead>
<tbody>
% for person in users %
<tr>
<td><span> <img class="small_cat" src=% static 'images/cat3.jpg' % /> </span></td>
<td><a href="% url 'friends_plans:user' user.pk %"> person.username|upper </a></span></td>
<td><span>Student at person.place_of_work_or_study</span></td>
<td>person.day_set.all.count</td>
<td>person.wish_list_set.all.count</td>
</tr>
% endfor %
</tbody>
</table>
<div class="pagination">
<div id="listing">
<span class="step-links">
% if users.has_previous %
<a href="?page= users.previous_page_number ">previous</a>
% endif %
<span class="current">
Page users.number of users.paginator.num_pages .
</span>
% if users.has_next %
<a href="?page= users.next_page_number ">next</a>
% endif %
</span>
</div>
</div>
</div>
% endblock %
这是 add_wish_list.html:
% extends 'friends_plans/base.html' %
% load staticfiles %
% block content %
<h1>Add a wish_list</h1>
<form method="post" action="/friends_plans:add_wish_list/">
% csrf_token %
form.as_p
<input type="submit" value="Add wish_list" />
</form>
% endblock %
这是 add_comment.html:
% extends 'friends_plans/base.html' %
% block content %
<h1>Add a wish_list</h1>
<form method="post" action="">
% csrf_token %
form.as_p
<input type="submit" value="Add comment" />
</form>
% endblock %
我知道问题与 url 有关,但我不明白它是什么,以及为什么之前 list.html 一切都很好,因为我没有更改它!
【问题讨论】:
您是否对friends_plans/base.html
进行了更改?
您应该将操作传递为% url "friends_plans:add_wish_list" %
。您也不需要传递嵌套字典 'context_dict': context_dict
只需传递 context_dict
谢谢!不,我没有更改我的 friends_plans/base.html 文件中的任何内容。
【参考方案1】:
在 list.html 中,您有 % url 'friends_plans:user' user.pk %
,但您的变量名为 person
,而不是 user
。
【讨论】:
我认为'user'来自'def user'(在views.py中)。它以前与 user.pk 一起使用。我认为问题出在“def add_comment”中 那条评论根本没有意义。您不会将任何称为“用户”的内容传递给 list.html 模板;您确实传递了users
,复数形式,然后使用for person in users
对其进行迭代,因此在该循环中每个单独的用户都被称为person
。以上是关于模板渲染期间的 Django 错误。找不到带有参数“(”,)'和关键字参数''的'name'的反向的主要内容,如果未能解决你的问题,请参考以下文章
Django:Heroku 上的生产应用程序找不到带有“路径”urlpattern 的模板
Django 模板语言 - 带有 Javascript 索引的 Python 数组