Python 如何使用get_absolute_url
我在理解教程中的网站代码时遇到困难。我的理解是,urls.py将一个参数作为product_slug,用于在show_产品视图中获取对象,另一个参数作为模板_名称使用 但参数“catalog\u product”在我的模型中定义了它在做什么。当我删除“catalog\u product”时,我得到的错误如下: 在/类别/吉他上没有反向匹配 请解释一下这个参数是如何得到绝对url的,以及我可以在哪里使用它 model.py是:Python 如何使用get_absolute_url,python,django,django-urls,Python,Django,Django Urls,我在理解教程中的网站代码时遇到困难。我的理解是,urls.py将一个参数作为product_slug,用于在show_产品视图中获取对象,另一个参数作为模板_名称使用 但参数“catalog\u product”在我的模型中定义了它在做什么。当我删除“catalog\u product”时,我得到的错误如下: 在/类别/吉他上没有反向匹配 请解释一下这个参数是如何得到绝对url的,以及我可以在哪里使用它 model.py是: def get_absolute_url(self): ret
def get_absolute_url(self):
return reverse('catalog_product', (), { 'product_slug': self.slug })
我将uurls.py作为:
url(r'^product/(?P<product_slug>[-\w]+)/$',show_product, {'template_name':'catalog/product.html'}, 'catalog_product')
模板product.html:-
% extends "catalog.html" %}
{% block content %}
<div class="product_image" >
{% load static %}
<img src="{% static 'images/products/main/{{ p.image}}' %}" alt="{{ p.name }}" />
</div>
<h1>{{ p.name }}</h1>
Brand: <em>{{ p.brand }}</em>
<br /><br />
SKU: {{ p.sku }}
<br />
In categor{{ categories.count|pluralize:"y,ies" }}:
{% for c in categories %}
<a href="{{ c.get_absolute_url }}">{{ c.name }}</a>
{% if not forloop.last %}, {% endif %}
{% endfor %}
<br /><br />
{% if p.sale_price %}
Was: <del>$ {{ p.old_price }}</del>
<br />
Now: $ {{ p.price }}
{% else %}
Price: $ {{ p.price }}
{% endif %}
<br /><br />
[add to cart button]
<br /><br />
<div class="cb"><br /><br /></div>
<h3>Product Description</h3>
{{ p.description }}
{% endblock %}
%扩展了“catalog.html”%}
{%block content%}
{%load static%}
{{p.name}}
品牌:{p.Brand}
SKU:{p.SKU}
在分类{categories.count{124;复数:“y,ies”}中:
{%类别中的c为%}
{%if不是forloop.last%},{%endif%}
{%endfor%}
{如果p.sale_price%}
Was:${p.old_price}
现在:${p.price}
{%else%}
价格:${p.Price}
{%endif%}
[添加到购物车按钮]
产品说明
{{p.description}}
{%endblock%}
一个观察结果是,您在url.py中定义的路由正在搜索类似于/product/
的URI。。。但是,由于URI不匹配,因此引发了异常。。。如果将URI更改为/product/guitart
,会发生什么情况?我给出的代码在我从中删除catalog\u product之前工作正常。catalog的重要性是什么_product@Tango虽然它通常作为关键字参数name='catalog\u product'
给出,但它是。您可以在reverse()
中传递视图的名称。它不是视图。视图是show\u product url的名称是更好的描述。见
% extends "catalog.html" %}
{% block content %}
<div class="product_image" >
{% load static %}
<img src="{% static 'images/products/main/{{ p.image}}' %}" alt="{{ p.name }}" />
</div>
<h1>{{ p.name }}</h1>
Brand: <em>{{ p.brand }}</em>
<br /><br />
SKU: {{ p.sku }}
<br />
In categor{{ categories.count|pluralize:"y,ies" }}:
{% for c in categories %}
<a href="{{ c.get_absolute_url }}">{{ c.name }}</a>
{% if not forloop.last %}, {% endif %}
{% endfor %}
<br /><br />
{% if p.sale_price %}
Was: <del>$ {{ p.old_price }}</del>
<br />
Now: $ {{ p.price }}
{% else %}
Price: $ {{ p.price }}
{% endif %}
<br /><br />
[add to cart button]
<br /><br />
<div class="cb"><br /><br /></div>
<h3>Product Description</h3>
{{ p.description }}
{% endblock %}