模板渲染时出错

时间:2017-03-11 14:02:21

标签: django django-urls

我正在尝试通过提供网址www.example.com/product_name/product_id来呈现产品的详细信息页面。但是我收到了这个错误。

反转' product_details'有争议的'(你' lehnga choli',43)'和关键字参数' {}'未找到。尝试了1种模式:['(?P [a-zA-Z] *)/(?P [0-9] +)/ $']

这是我的urls.py

    url(r'^(?P<product_name>[a-zA-Z]*)/(?P<product_id>[0-9]+)/$', 'designer.views.product_details', name='product_details'),

这是我在html模板中的网址

{% url 'product_details' designs.name designs.id %}

这是我的views.py

def product_details(request, product_name, product_id):
    design = Design.objects.get(id=product_id)    

    return render_to_response("designer/product_detail.html", {
        "design":design,                      
        "current": "product_detail",
    }, context_instance=RequestContext(request))

1 个答案:

答案 0 :(得分:0)

名称中有一个空格(不能在网址中使用)。正如我在评论中提到的,您可能希望查看SlugField

然而,因为您在视图中按Design查找id,因此模型是否有一个slug并不重要。您可以使用模板标记slugify使其可以通过URL传递。

{% url 'product_details' designs.name|slugify designs.id %}

这确实需要对您的网址进行小幅调整,因为空格已替换为- - 我通常只使用\w

url(r'^(?P<product_name>[\w-]+)/(?P<product_id>[0-9]+)/$', 'designer.views.product_details', name='product_details'),