未找到“update_task”“(”,)“的反向

Posted

技术标签:

【中文标题】未找到“update_task”“(”,)“的反向【英文标题】:Reverse for 'update_task' '('',)' not found 【发布时间】:2020-09-09 10:26:49 【问题描述】:

我是编程新手,我是 3 周前开始的,所以我很新,很快就迷路了哈哈,所以这个项目是为了学习我想要做的最终应用程序,这只是其中的一部分。

我正在尝试制作一个网站,我可以在其中添加具有特定属性的产品,例如姓名、家庭、类型、价格等。

这是我得到的错误:

NoReverseMatch 在 / 未找到带有参数“(”,)”的“update_task”的反向操作。尝试了 1 种模式:['update_task\/(?P[^/]+)\/$'] 请求方法:GET 请求网址:http://127.0.0.1:8000/ Django 版本:3.0.6 异常类型:NoReverseMatch 异常值: 未找到带有参数“(”,)”的“update_task”的反向操作。尝试了 1 种模式:['update_task\/(?P[^/]+)\/$'] 异常位置:_reverse_with_prefix 中的 C:\Users\Fede\PycharmProjects\remito_wakanda_prueba_1\venv\lib\site-packages\django\urls\resolvers.py,第 677 行 Python 可执行文件:C:\Users\Fede\PycharmProjects\remito_wakanda_prueba_1\venv\Scripts\python.exe Python版本:3.6.8 Python 路径: ['C:\Users\Fede\PycharmProjects\remito_wakanda_prueba_1\remitowakandaprueba', 'C:\Users\Fede\PycharmProjects\remito_wakanda_prueba_1\venv\Scripts\python36.zip', 'C:\Users\Fede\AppData\Local\Programs\Python\Python36\DLLs', 'C:\Users\Fede\AppData\Local\Programs\Python\Python36\lib', 'C:\Users\Fede\AppData\Local\Programs\Python\Python36', 'C:\Users\Fede\PycharmProjects\remito_wakanda_prueba_1\venv', 'C:\Users\Fede\PycharmProjects\remito_wakanda_prueba_1\venv\lib\site-packages']

这是我的代码:

list.html

<div class="center-column">

<form method="POST" action="/">
    % csrf_token %
    form.title
    <input class="btn btn-info" type="submit" name="Añadir Producto">
</form>

<div class="todo-list">

       #task   #tasks
% for producto in productos %
    <div class="item-row">
        <a class="btn btn-sm btn-info" href="% url 'update_task' productos.id %">Modificar</a>
        <a class="btn btn-sm btn-danger" href="% url 'delete' productos.id %">Borrar</a>

        % if productos.complete == True %
        <strike>productos</strike>
        % else %
        <span>productos</span>
        % endif %
    </div>
% endfor %
</div>

views.py:

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import *
from .forms import *

def index(request):
productos = Productos.objects.all()
form = AñadirAlPedido()

if request.method == 'POST':
    form = AñadirAlPedido(request.POST)
    if form.is_valid():
        form.save()
    return redirect('/')

context = 'productos': productos, 'form': form

return render(request, 'tasks/list.html', context)


def updateTask(request, pk):
productos = Productos.objects.get(id=pk)

form = AñadirAlPedido(instance=productos)

if request.method == 'POST':
    form = AñadirAlPedido(request.POST, instance=productos)
    if form.is_valid():
        form.save()
        return redirect('/')

context = 'form': form

return render(request, 'tasks/update_task.html', context)


def deleteTask(request,pk):
item = Productos.objects.get(id=pk)

context = 'item':item

if request.method == 'POST':
    item.delete()
    return redirect('/')

return render(request, 'tasks/delete.html', context)

forms.py:

from django import forms
from django.forms import ModelForm
from .models import *

# era TaskForm
class AñadirAlPedido(forms.ModelForm):
title = forms.CharField(widget=forms.TextInput(attrs='placeholder': 'Añadir producto...'))
class Meta: #era Task
    model = Productos
        #era '__all__'
    fields = ['aroma', 'tipo', 'linea']

提前谢谢♥

【问题讨论】:

它是producto.id,而不是% url 'update_task' ... % 中的productos.id(删除相同)。 谢谢,你能解释一下为什么它应该是 producto 而不是 productos 吗?该类称为productos 因为您使用 % for producto in productos % 进行迭代。 productosProductos 对象的collection,并且collection 没有.pk/.id 谢谢你的解释♥ 【参考方案1】:

您必须在模板中的forloop 中使用producto 而不是productos

% for producto in producto s%
<a class="btn btn-sm btn-info" href="% url 'update_task' producto.id %">Modificar</a>
    <a class="btn btn-sm btn-danger" href="% url 'delete' producto.id %">
...
% endfor %

【讨论】:

感谢您的回答!现在页面已经启动,但它并没有做我想做的事,你能帮我一点吗? 现在它有一个我可以写的盒子,但我想有一个菜单,我不能选择产品并且这些产品添加到详细订单中 我无法理解。你能解释更多吗? 是的,这就是我想要做的,在这里更好地解释,我不知道如何使用表单来使它成为一个实际的网络,在那里我可以订购这样的产品:***.com/questions/61959620/…

以上是关于未找到“update_task”“(”,)“的反向的主要内容,如果未能解决你的问题,请参考以下文章

“未找到带有参数 '()' 和关键字参数 '' 的 '' 的反向操作。”

未找到带有参数“(”,)”和关键字参数“”的“比率”的反向

使用面临未找到反向问题的类基视图

NoReverseMatch 错误。未找到“...”的反向

未找到带有参数“()”和关键字参数“”的“登录”的反向操作

未找到“用户创建”的 DRF 反向