我一直在墙上撞了几个小时,这可能非常简单。
我需要从一个模型中生成两个url slugs。一个实际上叫做slug,是一个SlugField,用于Product标题,另一个是一个ForeignKey类别。
理想情况下我想拥有的是
url(r'^products/(?P<category>[^\.]+)/(?P<slug>[^\.]+)/$', tool_detail, name='tool_detail'),
但是,URL的类别部分一直在为int()生成一个&#34;无效的文字,基数为10:&#39; category&#39; - 好吧,这是错误之一,我尝试了很多不同的组合。
模型
...
slug = models.SlugField()
category = models.ForeignKey(Category)
...
查看
def tool_detail(request, slug):
tool = get_object_or_404(Tool, slug=slug)
part = get_object_or_404(Part)
return render(request, 'tool_detail.html', {'tool': tool, 'part': part})
模板
<a href="{% url 'tool_detail' t.category slug=t.slug %}" ... </a>
网址
url(r'^products/tools/(?P<slug>[^\.]+)/$', tool_detail, name='tool_detail'),
呃......看看/ tools /是如何硬编码的?
感谢您的帮助。
答案 0 :(得分:2)
<强>网址
# query by primary key.
url(r'^products/(?P<category>[0-9]+)/(?P<slug>[^\.]+)/$', tool_detail, name='tool_detail'),
# query by the name.
url(r'^products/(?P<category>[\w]+)/(?P<slug>[^\.]+)/$', tool_detail, name='tool_detail'),
查看强>
def tool_detail(request, **kwargs):
tool = get_object_or_404(Tool, slug=kwargs.get('slug'))
part = get_object_or_404(Part)
return render(request, 'tool_detail.html', {'tool': tool, 'part': part})
应该工作它没有经过测试。
答案 1 :(得分:1)
在url中仅传递参数slug,但在url标记上传递两个参数。只修改如 模板
<a href="{% url 'tool_detail' t.slug %}" ... </a>
如果slug是int,我们可以更改url
url(r'^products/tools/(?P<slug>[0-9]+)/$', tool_detail, name='tool_detail'),
关于如何在url标记上传递动态参数的一些示例 https://docs.djangoproject.com/en/1.9/intro/tutorial04/