在Django_表2列上使用linkify选项创建链接
我想在中使用linkify向我的listview添加链接。我将Django 2与Django_表2 v 2.0.0b3一起使用 我有一个URL,其中包含两个上下文变量在Django_表2列上使用linkify选项创建链接,django,django-tables2,Django,Django Tables2,我想在中使用linkify向我的listview添加链接。我将Django 2与Django_表2 v 2.0.0b3一起使用 我有一个URL,其中包含两个上下文变量name,它是从ListView和slug字段species传递的: URL.py app_name = 'main' urlpatterns = [ #The list view path('genus/<slug:name>/species/', views.SpeciesListView.as_view(), n
name
,它是从ListView和slug字段species
传递的:
URL.py
app_name = 'main'
urlpatterns = [
#The list view
path('genus/<slug:name>/species/', views.SpeciesListView.as_view(), name='species_list'),
# The Detail view
path('genus/<name>/species/<slug:species>', views.SpeciesDetailView.as_view(), name='species'),
]
这给出了一个名称错误:未定义名称“物种”
species =tables.Column(linkify=('main:species', {'name': kwargs['name'],'slug':kwargs['species']}))
这产生了一个名称错误:未定义名称“kwargs”
species =tables.Column(linkify=('main:species', {'name': kwargs['name'],'slug':kwargs['species']}))
我还尝试将以下变量更改为字符串:
species =tables.Column(linkify=('main:species', {'name': 'name','slug':'species'}))
species =tables.Column(linkify=('main:species', {'name': 'name','slug':'object.species'}))
这些尝试为'species'提供了一个NoReverseMatch反向,但未找到关键字参数“{'name':'name','slug':'species'}”。尝试了1种模式:[属\\/(?P[^/]+)\\\/种\\/(?P[-a-zA-Z0-9\]+)$”]
将其格式化为以下任何一种格式将产生一个语法错误
:
species =tables.Column(kwargs={'main:species','name': name,'slug':species})
species =tables.Column(args={'main:species','name': name,'slug':species})
species =tables.Column(kwargs:{'main:species','name': name,'slug':species})
species =tables.Column(args:{'main:species','name': name,'slug':species})
如何添加类似于
{%url“main:species”name=name species=object.species%}
的链接?目前文档中没有这样的例子。试着从行的角度思考。在每一行中,表格需要该行的种类。django-tables2中使用的机制是访问器。它使您能够告诉django-tables2您希望它为某个值使用的值。您不能使用变量(如name
和species
),因为您希望从每个记录中检索它们
因此,使用访问器(通常缩写为A
),您的第一个示例如下所示:
class SpeciesTable(tables.Table):
species = tables.Column(linkify=('main:species', {'name': tables.A('name'),'slug': tables.A('species')}))
的概念可用于多个位置,也可用于更改要在列中呈现的值
不过我建议在模型上定义方法。这很好,因为通常当你想显示模型的链接时,你有一个实例,所以在模板中,这是一个{species.get\u absolute\u url}的问题
,对于django-tables2列的linkify
参数,通常可以忽略linkify=True
关于
linkify
上的文档,您是对的,它们当然需要改进。我在linkify
上的文档中添加了一些示例:这不起作用'name':tables.A('name'))
因为name
变量是作为上一页中的上下文变量传递的,未包含在表中。变量“name”是通过get\u context\u data
函数context[“name”]=self.kwargs[“name”传递的
。slug字段是从queryset加载的,我想您已经找到了。我想这是一个列的当前实现不支持的用例。您可能可以使用一个ok来快速实现这一点,这里的解决方案是species=tables.TemplateColumn(“”)