python - 未找到“update_task”“(”,)“的反向
问题描述
我是编程新手,我是 3 周前开始的,所以我很新,很快就迷路了哈哈,所以这个项目是为了学习我想要做的最终应用程序,这只是其中的一部分。
我正在尝试制作一个网站,我可以在其中添加具有特定属性的产品,例如姓名、家庭、类型、价格等。
这是我得到的错误:
NoReverseMatch at / Reverse for 'update_task' 未找到参数 '('',)'。尝试了 1 种模式:['update_task\/(?P[^/]+)\/$'] 请求方法:GET 请求 URL:http: //127.0.0.1 :8000/ Django 版本:3.0.6 异常类型:NoReverseMatch 异常值:
“update_task”的反向,未找到参数“(”,)”。尝试了 1 种模式:['update_task\/(?P[^/]+)\/$'] 异常位置:C:\Users\Fede\PycharmProjects\remito_wakanda_prueba_1\venv\lib\site-packages\django\ _reverse_with_prefix 中的 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']
这是我的代码:
列表.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>
视图.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)
表格.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']
提前谢谢♥</p>
解决方案
您必须在模板中使用producto
而不是productos
inforloop
{% 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 %}
推荐阅读
- node.js - findOneandUpdate mongoose
- java - c 中有什么类似于 Reflection API 和注释在 java 中的吗?
- r - 在 for 循环中的第一个空列中添加值
- django - 我应该为来自 React 的所见即所得数据使用什么 Django 模型字段?
- c - 为什么 int i = 2; printf("%d%d%d",i*=2,++i,i++) 输出 882
- javascript -
:MouseEvent.target.select() 在触发 element.nativeElement.click() 时不起作用 - docker-compose - Nextjs + Docker-Compose:如何在客户端解析容器主机名?
- node.js - 为什么节点 js 中的异步函数隐藏了所有数据而不是指定的?
- php - 开始自动下载 PDF 文件
- .net - linux守护进程如何读取worker服务.Net Core 3.1中的xml文件