我是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 %}
任何想法?
答案 0 :(得分:0)
您的第一个网址格式中的$
可能成为问题。美元符号表示它是模式的结尾,所以它永远不会费心包含/检查产品网址。索引网址是否有效?