【问题标题】:Reverse for 'completetodo' with arguments '(None,)' not found. 1 pattern(s) tried: ['todo/(?P<todo_pk>[0-9]+)/complete$'] Django未找到参数“(无,)”的“completetodo”反向。尝试了 1 种模式:['todo/(?P<todo_pk>[0-9]+)/complete$'] Django
【发布时间】:2020-05-12 00:55:04
【问题描述】:

我正在尝试做一个从对象调用细节的函数。

网址:

path('todo/<int:todo_pk>/complete', views.completetodo, name='completetodo'),
path('todo/<int:todo_pk>', views.viewtodo, name="viewtodo"),

viewtodo 使用 GET 方法接收请求以构建表单并接收数据的一些更改。视图 completetodo,应该是一个按钮来填充具有完成数据的字段:

def viewtodo(request, todo_pk):
    todo = get_object_or_404(Todo, pk=todo_pk, user=request.user)
    if request.method == 'GET' :
        form = TodoForm (instance=todo)
        return render (request, 'TodoList/viewtodo.html', {'todo':Todo, 'form':form})

    if request.method == 'POST' :
        try:
            form = TodoForm(request.POST, instance= todo)
            form.save()
            return redirect('currentTodo')
        except ValueError:
            return render(request, 'TodoList/viewTodo.html', {'todo':Todo, 'form':form, 'error':'Houve um erro com os dados que tentou salvar. Por favor, tente novamente.'})

def completetodo(request, todo_pk):
    todo = get_object_or_404(Todo, pk=todo_pk, user=request.user)
    if request.method == 'POST':
        return render (request, 'TodoList/viewtodo.html')

HTML:

{% extends 'TodoList/base.html' %}

{% block content %}
    {{ error }}
    {{ todo.title }}
    <form method="POST">
        {% csrf_token %}
        {{ form.as_p }}
    <button type="submit"> Alterar </button>
    </form>

    <form method="POST" action="{% url 'completetodo' todo.id %}">
        {% csrf_token %}
        <button type="submit">Concluir</button>
    </form>

{% endblock %}

【问题讨论】:

    标签: django reverse


    【解决方案1】:

    你没有在上下文中传递变量

    def completetodo(request, todo_pk):
        todo = get_object_or_404(Todo, pk=todo_pk, user=request.user)
        if request.method == 'POST':
            return render (request, 'TodoList/viewtodo.html', {'todo':todo})
    

    您还在模板中使用不存在“待办事项”的变量,并在仅查询单个对象的地方迭代多个对象(甚至没有传递给上下文,现在可以作为待办事项访问)

    你应该看看简介tutorial

    【讨论】:

    • 感谢答案.....我把错误的 HTML 放在这里.....我现在要替换。
    猜你喜欢
    • 2020-10-21
    • 1970-01-01
    • 2019-09-07
    • 2021-12-12
    • 2020-05-13
    • 2017-11-05
    • 1970-01-01
    • 2021-08-10
    • 2020-08-16
    相关资源
    最近更新 更多