Skip to main content
 首页 » 编程设计

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

2024年08月22日30exmyth

我正在尝试在基于访问器的 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> 的链接.