Ошибка: NoReverseMatch в / import / group_edit / 1 / отменить для «подтвердить-удалить» с аргументами ((',,)' - PullRequest
0 голосов
/ 11 июня 2019
Error : Error : NoReverseMatch at /import/group_edit/1/ Reverse for 'confirm-delete' with arguments '('',)' not found. 1 pattern(s) tried: 
['import\\/confirm_delete\\/(?P<group_id>[0-9]+)\\/$']

Эта ошибка взята из моего файла verify_delete.html, когда я хочу перейти к group-edit.html

Сценарий

: переход к шаблону списка всех групп (group_list.html). Для каждой группы у вас есть ссылка для редактирования. Когда я нажимаю на это, Erro появляется не в edit_group.html

Надеюсь, это понятно. Пожалуйста, смотрите код ...: -)

Изменение параметров просмотра, но не работает. Похоже, что параметр не отправляется в def verify_delete.

group_list.html:

{% block page %}

            <div class="panel-body">
             <table class="table table-bordered table-hover table-striped col-md-3">
                <thead class="thead-dark">
                    <tr class="text-center">
                        <th>Group Name</th>
                        <th>Parent Name</th>
                    </tr>
                </thead>

                <tbody>

                    {%  for group in groups %}
                        <tr>
                            <td scope="row" class="col-md-3"><a href="{% url 'group-edit' group.group_id %}">{{ group.group_name|capfirst }}</a></td>
                            <td class="col-md-3">{{  group.groupParent_id|capfirst }}</td>
                        </tr>

                    {%  endfor %}

                </tbody>
             </table>

            </div>

{% endblock %}

group_edit.html:

{% block page %}
    <form method="POST">
        {%  csrf_token %}
        <div class="col-lg-4 col-md-4 col-sm-4 content">
        {% bootstrap_form form %}
        <button type="submit" class="btn btn-pink pull-right">Save</button>
        <button type="reset" class="btn btn-warning pull-left"><a href="{%  url 'confirm-delete' form.group_id %}"></a>Delete</button>
        </div>
        <a href="{% url 'group-list' %}">Back to list</a>
    </form>
{% endblock %}

confirm_delete.html:

{% block page %}

    <form method="post">{% csrf_token %}
        <p>Are you sure you want to delete "{{ obj }}"?</p>
        <input type="submit" value="Confirm" class="btn btn-warning">
        <a href="group_list.html" class="btn btn-default">Cancel</a>
    </form>

{% endblock %}

views.py:

def group_list(request):
    groups = Group.objects.all().order_by("-group_name")

    return render(request, 'imports/group_list.html', {"groups": groups})

def group_edit(request, group_id):
    form = GroupForm(instance=Group.objects.get(group_id=group_id))

    if request.method == "POST":
        form = GroupForm(request.POST, instance=Group.objects.get(group_id=group_id))

        if form.is_valid():
            form.save()
            messages.success(request, 'Group saved')  # message for inform user of success - See messages in html file
            return redirect(group_list)

    return render(request, 'imports/group_edit.html', {
        "form": form,
    })

def confirm_delete(request, group_id):
    obj = GroupForm(instance=Group.objects.get(group_id=group_id))
    if request.method == "POST":
        obj.delete()
        messages.success(request, 'Deleted')  # message for inform user of success - See messages in html file
        return render(request, 'imports/group_list.html')

    context = {
        "obj": obj
    }
    return render(request, "imports/confirm_delete.html", context)

urls.py:

  path('group_edit/<int:group_id>/', views.group_edit, name='group-edit'),
    path('confirm_delete/<int:group_id>/', views.confirm_delete, name='confirm-delete'),
    path('group_list/', views.group_list, name='group-list'),

без ошибок и собирается редактировать страницу (кнопка удаления на этой странице)

1 Ответ

0 голосов
/ 11 июня 2019

form не имеет атрибута group_id. Вы можете получить к нему доступ через экземпляр формы:

{%  url 'confirm-delete' form.instance.group_id %}

Или вы можете включить group_id в контекст шаблона,

return render(request, 'imports/group_edit.html', {
    "group_id": group_id,
    "form": form,
})

тогда вы можете использовать group_id в теге URL:

{%  url 'confirm-delete' group_id %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...