我是一个模板我试图将类别链接到列出该类别的所有内容的视图:
<div class="categories">
tags:
{% for c in post.categories.all %}</div>
<ul>
<a class="category" href="{% url "news.views.get_category" c %}">{{c}}</a>
</ul>
{% endfor %}
</div>
在urls.py中的我有:
url(r'^(?P<post_cat>[-\w]+)$', 'news.views.get_category'),
并在视图中:
def get_category(request, post_cat):
"""News by Category listing."""
posts = News.objects.get(categories=post_cat).order_by("-pub_date")
paginator = Paginator(posts, 10)
try: page = int(request.GET.get("page", '1'))
except ValueError: page = 1
try:
posts = paginator.page(page)
except (InvalidPage, EmptyPage):
posts = paginator.page(paginator.num_pages)
return render_to_response("news/list-newss_by_category.html",
dict(posts=posts, user=request.user))
但是我收到了这个错误:
'ascii' codec can't decode byte 0xd8 in position 12: ordinal not in range(128)
(类别字符串是波斯语)
另一方面,当我使用
时<div class="category">{{ c }}</div>
相反,类别字符串呈现没有问题。
所以问题是如何将类别项作为{%url%}标记内的参数发送到视图。
我已经尝试了不同的东西。感谢您提示解决此问题。
P.S 即可。实际上我通过在模板标签中使用c.id来解决问题并相应地调整了urls.py和views.py。但仍然坚持这个问题。希望有人能想出更好的解决方案。
答案 0 :(得分:2)
您应该使用c.cat_slug
,其中cat_slug
是包含您希望在网址中显示的字符串的字段。与{% url "news.views.get_category" c.cat_slug %}
如果你使用:{% url "news.views.get_category" c %}
,Python会从你的模型中调用方法__unicode__
,而这不是你想要的。