模板渲染期间的 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 数组

我在 django 模板中显示数据库数据时找不到错误

模板提供了错误的媒体目录路径,Django 找不到图像

Django,TemplateDoesNotExist 错误:Heroku 找不到模板目录。如何显示它在哪里看?

Django 2.0 - 渲染错误的模板(没有错误)