使用urlencode()的LinkColum

时间:2019-01-22 13:17:34

标签: django django-tables2

我有这样的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(),但这不幸地无法正常工作。

有没有办法解决这个问题?

2 个答案:

答案 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)

我更喜欢后者。