找不到“更新任务”(“”,)的反向

2024-06-26 00:24:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我试图建立一个网站,在那里我可以添加产品,有特定的属性,如,名称,家庭,类型,价格等

这是我得到的错误:

NoReverseMatch at / Reverse for 'update_task' with arguments '('',)' not found. 1 pattern(s) tried: ['update_task\/(?P[^/]+)\/$'] Request Method: GET Request URL: http://127.0.0.1:8000/ Django Version: 3.0.6 Exception Type: NoReverseMatch Exception Value:
Reverse for 'update_task' with arguments '('',)' not found. 1 pattern(s) tried: ['update_task\/(?P[^/]+)\/$'] Exception Location: C:\Users\Fede\PycharmProjects\remito_wakanda_prueba_1\venv\lib\site-packages\django\urls\resolvers.py in _reverse_with_prefix, line 677 Python Executable: C:\Users\Fede\PycharmProjects\remito_wakanda_prueba_1\venv\Scripts\python.exe Python Version: 3.6.8 Python Path:
['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']

提前谢谢♥


Tags: fromimportformtaskrequestupdateformsusers
1条回答
网友
1楼 · 发布于 2024-06-26 00:24:37

您必须在模板中的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 %}

相关问题 更多 >