我有这个错误而且我找不到解决方案,我得到了ID_pedido_ex和cod_experto的关键字,但我仍然抛出错误,请求学生帮忙?
Reverse for 'entregado_ex' with arguments '()' and keyword arguments '{'id_pedido_ex': 11, 'cod_experto': 'VA-0012 '}' not found. 1 pattern(s) tried: ['solicitar/entregar-extra/(?P<id_pedido_ex>\\d+)/(?P<cod_experto>\\d+)/$']
模板渲染期间出错。
按钮模板html:
<a href="{% url "usuario:entregado_ex" id_pedido_ex=ex.id cod_experto=ex.articulo_ex.cod_experto %}" method='GET' type="submit" class="btn btn-success pull-right"/>Entregar</a>
url global:
urlpatterns = [
# Examples:
url(r'^solicitar/', include(urls, namespace="usuario")),
]
url app:
urlpatterns = [
url(r'^entregar-extra/(?P<id_pedido_ex>\d+)/(?P<cod_experto>[\w-]+)/$', Update_stockex, name="entregado_ex"),
]
views.py:
@login_required
def Update_stockex(request, id_pedido_ex, cod_experto):
if request.method == 'GET':
pedido = Pedido_Extra.objects.get(id=id_pedido_ex)
articulo = Articulo.objects.get(pk=cod_experto)
articulo.stock -= pedido.cantidad_ex
articulo.save()
pedido.estado_ex = 'entregado'
pedido.fecha_entrega_ex = datetime.now()
pedido.save()
return HttpResponseRedirect('/solicitar/pedidos-extra/')
models.py:
class Articulo(models.Model):
cod_experto = models.CharField(max_length=999, primary_key=True, blank=True)
nombre = models.CharField(max_length=999, blank=True)
stock = models.IntegerField(blank=True, default=0)
def __str__(self):
return '{}'.format(self.nombre, self.stock)
class Pedido_Extra(models.Model):
articulo_ex = models.ForeignKey('Articulo')
especialidad_ex = models.ForeignKey('Especialidad')
cantidad_ex = models.IntegerField(blank=True, default=0)
def __str__(self):
return '{}'.format(self.articulo_ex, self.especialidad_ex, self.estado_ex, self.cantidad_ex)
有什么问题?问候!
答案 0 :(得分:0)
添加get_absolute_url方法以获得视图的反向
class Articulo(models.Model):
cod_experto = models.CharField(max_length=999, primary_key=True, blank=True)
...
def get_absolute_url(self):
return reverse('entregado_ex', kwargs={'id_pedido_ex': pedido.id, 'cod_experto':self.code_experto})`
答案 1 :(得分:0)
正则表达式中发生错误,更改[\ w - ] +)/
要:
url(r'^entregar/(?P<id_pedido_ex>\d+)/(?P<cod_experto>[^/]+)/$', Update_stockex, name="entregado_ex"),
答案 2 :(得分:0)
去Usuario的urls.py>设置app_name = usuario
您的问题应该得到解决。