python-3.x - /vistaprevia/pedidos/4/edit 上的 NoReverseMatch 未找到“editr”的反向。“editr”不是有效的视图函数或模式名称
问题描述
我在 django 3.2 和 python 3.9.2 中的编辑视图有问题,问题是当在我的视图中进入链接 EDITAR 时,它会抛出错误“NoReverseMatch at /vistaprevia/pedidos/4/edit”并说对我来说“找不到'editr'的反向。'editr'不是有效的视图函数或模式名称。”,我找不到代码发生了什么。这是我的代码
视图.py
from django.shortcuts import render, redirect, get_object_or_404
from django.views import generic
from django.views.generic.edit import UpdateView
from vistaprevia.models import Op
from vistaprevia.forms import CargarFormOp, EditarFormOp#, EditarFormRem
# Create your views here.
from django.shortcuts import render
from django.http import HttpResponse
from django.template import RequestContext, loader
app_name = 'vistaprevia'
#VISTA QUE MUESTRA LOS ULTIMOS 10 PEDIDOS
def index(request):
ultimasop = Op.objects.all().order_by('-fecha')
return render(request, 'vistaprevia/index.html', context={'ultimasop':ultimasop})
#DETALLE PEDIDOS
class PedidoDetailView(generic.DetailView):
model = Op
#CARGA DE PEDIDOS, EMPIEZ LA ACCION, WIIIIIIIIII
def cargar_pedido(request):
if request.method=='POST':
form = CargarFormOp(request.POST)
if form.is_valid():
fecha = form.cleaned_data['fecha']
cliente = form.cleaned_data['cliente']
tipoop = form.cleaned_data['tipoop']
fact = form.cleaned_data['fact']
condicion = form.cleaned_data['condicion']
despacho = form.cleaned_data['despacho']
vendedor = form.cleaned_data['vendedor']
newdoc = Op(fecha=fecha, cliente=cliente, tipoop=tipoop,fact=fact, condicion=condicion, despacho=despacho ,vendedor=vendedor)
newdoc.save()
return redirect("index")
else:
form = CargarFormOp()
return render(request, 'vistaprevia/formulario.html', {'form': form})
#AGREGAMOS TODO LO REFERETE AL PAGO Y DEMAS, MENS COSAS PARA QUE HAGA EN MI TRABAJO, SUPER WIIIIIIIIII
def editar_pedido(request, pk):
pedid = get_object_or_404(Op, pk=pk)
if request.method=="POST":
form = EditarFormOp(request.POST, instance = pedid)
if form.is_valid():
pedid.npedido1 = form.save(commit=False)
pedid.nfactura1 = form.save(commit=False)
pedid.nrecibo1 = form.save(commit=False)
pedid.npedido2 = form.save(commit=False)
pedid.nfactura2 = form.save(commit=False)
pedid.nrecibo2 = form.save(commit=False)
pedid.fecharem1 = form.save(commit=False)
pedid.nrem1 = form.save(commit=False)
pedid.fecharem2 = form.save(commit=False)
pedid.nrem2 = form.save(commit=False)
pedid.save()
return redirect('pedido-detalle', pk=pedid.pk)
else:
form = EditarFormOp(instance=pedid)
return render(request, 'vistaprevia/editar_pedido.html', {'form':form})
表格.py
from django.forms import ModelForm
from .models import Op
class CargarFormOp(ModelForm):
class Meta:
model = Op
fields = ['fecha', 'cliente', 'tipoop', 'fact', 'condicion', 'despacho', 'vendedor', 'estadoop', 'deudaop']
def __init__(self, *args, **kwargs):
super(CargarFormOp, self).__init__(*args, **kwargs)
class EditarFormOp(ModelForm):
class Meta:
model = Op
fields = ['npedido1', 'nfactura1', 'nrecibo1', 'npedido2', 'nfactura2', 'nrecibo2', 'fecharem1', 'nrem1', 'fecharem2', 'nrem2']
def __init__(self, *args, **kwargs):
super(EditarFormOp, self).__init__(*args, **kwargs)
网址.py
from django.urls import path
from vistaprevia import views
app_name = 'vistaprevia'
urlpatterns = [
path('', views.index, name='index'),
path('cargar/', views.cargar_pedido, name='cargar'),
path('pedidos/<int:pk>', views.PedidoDetailView.as_view(), name='pedido-detalle'),
path('pedidos/<int:pk>/edit', views.editar_pedido, name='editr'),
]
op-detail.html
<article class="col-12 col-sm-6 col-md-4 tarjeta3">
<h1>Remitos:</h1>
<p>Fecha: {{ fecharem1 }}</p>
<p>N° Remito: {{ nrem1 }}(1)</p>
<p><a class="light bg-dark col-2" href="#">Remito 1</a></p>
<p>Fecha: {{ fecharem2 }} </p>
<p>N° Remito (2): {{nrem2}}</p>
<p><a class="light bg-dark col-2" href="#">Remito 2</a></p>
<p><a class="light bg-dark col-2" href="{% url 'vistaprevia:editr' op.pk %}">Editar</a></p>
</article>
编辑器_pedido.html
{% extends 'vistaprevia/plantilla.html' %}
{% load static %}
{% load i18n %}
{% block content %}
<!--muestra por pedidos-->
<main class="container-fluid">
<div class="row">
<article class="col-12 col-sm-6 col-md-4 tarjeta1">
<h1>Pedido: </h1>
<p>Fecha: {{ op.fecha }}</p>
<p>Cliente: {{ op.cliente }}</p>
<p>Tipo OP: {{ op.tipoop }}</p>
<p>% Facturado: {{ op.fact }}</p>
<p>Condicion de pago: {{ op.condicion }}</p>
<p>Despacho: {{ op.despacho }}</p>
<p>Vendedor: {{ op.vendedor }}</p>
<p><a class="light bg-dark col-2" href="#">Archivo OP</a></p>
<p><a class="light bg-dark col-2" href="#">Proforma (1)</a></p>
<p><a class="light bg-dark col-2" href="#">Proforma (2)</a></p>
</article>
<article class="col-12 col-sm-6 col-md-4 tarjeta2">
{{ form.as_p }}
<input type="submit" value="GUARDAR">
</article>
<article class="col-12 col-sm-6 col-md-4 tarjeta3">
<h1>Remitos:</h1>
<p>Fecha: {{ op.fecharem1 }}</p>
<p>N° Remito: {{ op.nrem1 }}(1)</p>
<p><a class="light bg-dark col-2" href="#">Remito 1</a></p>
<p>Fecha: {{ op.fecharem2 }} </p>
<p>N° Remito (2): {{ op.nrem2 }}</p>
<p><a class="light bg-dark col-2" href="#">Remito 2</a></p>
<p><a href="{% url 'editr' pk=op.opid %}" >Editar</a></p>
</article>
</div>
</main>
解决方案
将editar_pedido
返回更改为此:
return redirect(reverse('pedido-detalle', kwargs={"pk": pedid.pk}))
推荐阅读
- c# - 如何使用 EF 核心查询从多对多模型中获取一些对象?
- javascript - 使用 CSS Grid 并将每个 div 用作弹出模式的按钮,但它不起作用?
- excel - 如何添加由有效字符组成的不重复名称的工作表?
- node.js - 如何设置 Mocha 来查找我的内部项目模块?
- c++ - 在 C++ 中包装 fortran 函数:带有 LAPACK 的犰狳
- excel - EXCEL - Evaluate() 中使用的公式总是返回 VarType 10(错误),当它在单元格中运行良好时
- sapui5 - 是否可以在 UI5 中的片段加载(从另一个视图)上执行一个方法(最好是 onInit 方法)?
- django - 从视图中调用管理命令并创建文件
- c# - dotNetRDF Reasoners 是否打算以这种方式使用?
- c# - 嵌套列表对象上的 Lambda 查询