我正在尝试在基于访问器的 LinkColumn 上使用 django-tables2 设置 GET 参数。
假设:
网址.py
urlpatterns = [
...
url(r'^rqGET$', views.rqGET, name='rqGET'),
...
]
View .py
def rqGET(request):
#... do something with request.GET
表格.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”都不同)。
请您参考如下方法:
访问器在 django-tables2 中并不是这样工作的。 Django-tables2 使用 Django 的 reverse 生成网址。如果你想要reverse为了能够生成 url,您需要在 url 中定义参数,这些参数将作为参数传递给您的 View 函数:
# urls.py
urlpatterns = [
...
url(r'^rqGET/(?P<id>\d+)$', views.rqGET, name='rqGET'),
...
]
# views.py
def rqGET(request, id):
# do something with request/id.
如果您不想更改 url 的格式,您可以使用自定义 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> 的链接.
