【问题标题】:Django Error: 'Reverse for 'guestlist' with arguments '('',)' not found.'Django 错误:'未找到带有参数'('',)'的'guestlist'的反向。'
【发布时间】:2017-07-22 13:16:53
【问题描述】:

我首先要说我知道这个问题经常出现,但我无法在其他主题中找到解决方案。

我在尝试加载页面时遇到此错误。

相关观点:

def index(request):
    all_lists = GuestList.objects.all()
    guest_list = GuestList()
    for glist in all_lists:
        guest_list = glist
    return render(request, 'guestlist/base.html', {'guest_list': guest_list})


def guestlist(request, list_id):
    g_list = get_object_or_404(GuestList, pk=list_id)
    return render(request, 'guestlist/guestlist.html', {'g_list': g_list})

guestlist/urls.py:

app_name = 'guestlist'

urlpatterns = [

    # /guestlist/
    url(r'^$', views.index, name='index'),
    # /guestlist/#/
    url(r'^(?P<list_id>[0-9]+)/$', views.guestlist, name='guestlist'),
    # /guestlist/#/isclose/
    url(r'^(?P<list_id>[0-9]+)/isclose/$', views.isclose, name='isclose'),
]

发生错误的 HTML 片段:

模板:

{% load staticfiles %}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %} SitDown {% endblock %}</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>
    <link rel="stylesheet" type="text/css" href="{% static 'guestlist/style.css' %}"/>
    <link href="https://fonts.googleapis.com/css?family=Abel|Galdeano" rel="stylesheet"/>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

</head>
<body>
<nav class="navbar navbar-default">
    <div class="container-fluid">
        <!-- Header -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#topNavBar">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>

            </button>
            <a class="navbar-brand" href="{% url 'guestlist:index' %}">Sit Down</a>
        </div>

        <!-- Items -->
        <div class="collapse navbar-collapse" id="topNavBar">
            <ul class="nav navbar-nav">
                <li class="active">
                    <a href="{% url 'guestlist:guestlist' guest_list.id %}">
                        <span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span>&nbsp;
                        Guest List
                    </a>
                </li>
                <li class="">
                    <a href="#">
                        <span class="glyphicon glyphicon-th" aria-hidden="true"></span>&nbsp;
                        Seating
                    </a>
                </li>
                <li class="">
                    <a href="#">
                        <span class="glyphicon glyphicon-check" aria-hidden="true"></span>&nbsp;
                        Checklist
                    </a>
                </li>
                <li class="">
                    <a href="#">
                        <span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span>&nbsp;
                        Help
                    </a>
                </li>
            </ul>
            <form class="navbar-form navbar-left" role="search" method="get" action="#">
                <div class="form-group">
                    <input type="text" class="form-control" name="q" value="">
                </div>
                <button type="submit" class="btn btn default">Search</button>
            </form>
        </div>
    </div>
</nav>
{% block body %}

{% endblock %}
</body>
</html>

一切似乎都井井有条。 id 被传递并像它应该的那样到达函数'guestlist()',但我仍然得到错误。

视图“index()”呈现“base.html”,异常发生在该处。

编辑:

似乎当我像这样对列表 ID 进行硬编码时:&lt;a href="{% url 'guestlist:guestlist' 2 %}"&gt; 它可以工作。但是当我动态地这样做时,它不会。如果实例提供相同的 url,我检查了变量和两者。

【问题讨论】:

  • 发布“HTML 片段”毫无意义。这部分是什么模板?哪个视图正在渲染它?还要注意,您的索引视图完全没有任何意义;你认为你向那里的模板发送了什么值?
  • 已编辑。另外,我知道索引是多余的,但我正在使用教程,就是这样。我还在试验和学习 Django。
  • 你还没有发布足够的信息。该模板的其余部分在哪里?特别是,guest_list 是从哪里来的?您是否有某种 for 循环 - 如果有,请发布它。 (而且我并没有说索引视图是多余的,远非如此,只是代码没有意义。)
  • 再次编辑。而guest_list 来自index()view。
  • 你检查过你的all_lists是否为空吗?

标签: python html django


【解决方案1】:

1)根据您的问题标题,这意味着GuestList 模型没有任何条目。

2) 始终在 url 正则表达式中使用 \d+ 进行数字匹配,例如:(?P&lt;list_id&gt;\d+)

【讨论】:

    【解决方案2】:

    在 HTML 中,当您传递 guestlist 列表时,您必须对其进行迭代 例如:

    def index(request):
        guest_list = GuestList.objects.all()
        return render(request, 'guestlist/base.html', {'guest_list': guest_list})
    

    在 HTML 页面中

    <body>
    {% for guest in guest_list %}  <-- Start LOOP
        <a href="{% url 'guestlist:guestlist' guest.id %}"> <--- Individual Guest ID
    {% endfor %}   <-- End LOOP
    </body>
    

    现在您可以获取个人 ID 并将其通过 url 传递到您各自的 guestlist 视图视图,如果这是您想要的。

    【讨论】:

    • 我有一个工作正常的页面,可以打印列表中的客人。问题是它没有得到列表本身。这就是为什么我在索引视图中对其进行迭代并将其传递给 base.html
    • 要访问每个guest_id,您必须进行迭代。
    • 要获取整个名单,guest_list 已经是客人名单了。
    猜你喜欢
    • 2021-04-13
    • 2021-11-09
    • 2021-03-29
    • 2019-09-14
    • 2016-11-11
    • 2018-05-02
    • 2017-02-26
    • 2021-03-01
    • 2021-03-13
    相关资源
    最近更新 更多