Django中的NoReverseMatch(url ploblem)

时间:2015-07-01 19:26:42

标签: python django django-urls

我是Django的初学者 我想用数据库field_name设置我的URL,而不是使用Django教程中的主键。这是我的代码。

*mysite*
**dwru/urls.py**
urlpatterns = [
    url(r'^$', include('product.urls', namespace="product")),
]

*myapp*
**product/urls.py**
urlpatterns = [
   url(r'^$', views.index, name='index'),
   url(r'^(?P<name_catalog>[-_\w]+)/$', views.product_list_from_index, name='catalog'),
]

**product/views.py**
def product_list_from_index(request, name_catalog):
   catalog = get_object_or_404(Catalog, name_catalog=name_catalog)
   context = {
   'catalog': catalog
}
   return render(request,'product/product_list.html', context)


**product/models.py**
class Catalog(models.Model):
  name_catalog = models.CharField(max_length=45)
  product = models.ManyToManyField(Product)

**template/product/index.html**
{% for catalog in catalog_list %}
    <h1><a href="{% url 'product:catalog' catalog.name_catalog %}">{{ catalog.name_catalog }}</h1>
{% endfor %}

然后我用“TestCa01”添加Catalog字段,然后显示错误

NoReverseMatch at /
Reverse for 'catalog' with arguments '(u'TestCa01',)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'$(?P<name_catalog>[-_\\w]+)/$']

模板中的这一行有点问题

{% url 'product:catalog' catalog.name_catalog %}

任何想法?

1 个答案:

答案 0 :(得分:0)

您的第一个网址格式中的$可能成为问题。美元符号表示它是模式的结尾,所以它永远不会费心包含/检查产品网址。索引网址是否有效?