NoReverseMatch at

时间:2017-03-20 00:28:09

标签: python django

我有这个错误而且我找不到解决方案,我得到了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) 

有什么问题?问候!

3 个答案:

答案 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

您的问题应该得到解决。