Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django_表2列上使用linkify选项创建链接_Django_Django Tables2 - Fatal编程技术网

在Django_表2列上使用linkify选项创建链接

在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

我想在中使用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(), 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(“”)