我有这样的LinkColum
:
artist = tables.LinkColumn('artist_detail', args=[A('artist')],
不幸的是,有些艺术家的斜线这样的特殊字符破坏了Django-URL系统。
Reverse for 'artist_detail' with arguments '('Paul Ray Featuring 33 1/3',)' not found. 1 pattern(s) tried: ['artists\\/(?P<artist>[^/]+)$']
我尝试用A('artist')
封装django.utils.http.urlencode()
,但这不幸地无法正常工作。
有没有办法解决这个问题?
答案 0 :(得分:0)
根据docs,您应该使用普通列并使用linkify
参数。
artist = tables.Column(linkify=("artist_detail", (tables.A("artist.pk"), )))
答案 1 :(得分:0)
django-tables2只是将这些中继到django的django.urls.reverse
。没有与您传递的值相匹配的网址,因此您必须调整传递的值。
一种实现此目的的方法是在模型中添加提供urlencode
d版本名称的方法,然后在访问器中指定该方法。
或者,您可以在模型上实现get_absolute_url
方法,然后在其中执行urlencode
。然后,您可以使用
artist = tables.Column(linkify=true)
我更喜欢后者。