如何将 GET 参数添加到 django-tables2 LinkColumn
How to add GET parameters to django-tables2 LinkColumn
我正在尝试根据具有 django-tables2
的访问器在 LinkColumn
上设置 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”会不同)。
访问器在 django-tables2 中并不是这样工作的。 Django-tables2 使用django 的reverse
来生成url。如果您希望 reverse
能够生成 url,您需要在 url 中定义参数,这些参数将作为参数传递给您的视图函数:
# 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 的格式,您可以在 MyTable
上使用自定义 render_
函数,如下所示:
# 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>
的 link。
我正在尝试根据具有 django-tables2
的访问器在 LinkColumn
上设置 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”会不同)。
访问器在 django-tables2 中并不是这样工作的。 Django-tables2 使用django 的reverse
来生成url。如果您希望 reverse
能够生成 url,您需要在 url 中定义参数,这些参数将作为参数传递给您的视图函数:
# 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 的格式,您可以在 MyTable
上使用自定义 render_
函数,如下所示:
# 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>
的 link。