如何将GET参数添加到django-tables2 LinkColumn

时间:2016-04-18 15:31:23

标签: python django django-tables2

我正在尝试根据LinkColumn的访问者在django-tables2上设置GET参数。

让我们说:

urls.py

urlpatterns = [
...
    url(r'^rqGET$', views.rqGET, name='rqGET'),
...
]

views.py

def rqGET(request):
    #... do something with request.GET

tables.py

class MyTable(tables.Table):
    id = LinkColumn('rqGet',text='Link') # do something with Accessors to make a GET string, maybe ?id=A('pk')
    class Meta:
        model = MyModel #(has field 'id')

我想使用reverse来获取正确的url,然后构造GET参数字符串。例如/rqGET?id=1('1'在每一行中会有所不同。)

1 个答案:

答案 0 :(得分:3)

这并不是访问者在django-tables2中的工作方式。 Django-tables2使用django的reverse生成网址。如果您希望reverse能够生成网址,则需要在网址中定义参数,这些参数将作为参数传递给您的视图函数:

# urls.py

urlpatterns = [
...
    url(r'^rqGET/(?P<id>\d+)$', views.rqGET, name='rqGET'),
...
]

# views.py
def rqGET(request, id):
    # do something with request/id.

如果您不想更改网址格式的方式,可以在render_上使用自定义MyTable功能,如下所示:

# tables.py
from django.core.urlresolvers import reverse

class MyTable(tables.Table):
    id = LinkColumn('rqGet', text='Link') # do something with Accessors to make a GET string, maybe ?id=A('pk')

    class Meta:
        model = MyModel

    def render_id(self, record):
        url = reverse('rqGET')
        return format_html('<a href="{}?id={}">{}</a>', url, record.id, 'Link')

这将呈现格式为/rqGET/?id=<id>的链接。