gpt4 book ai didi

django - 在 Django_tables2 列上使用 linkify 选项来创建链接

转载 作者:行者123 更新时间:2023-12-04 01:52:48 29 4
gpt4 key购买 nike

我想在 Columns of the API Reference 中使用 linkify 将链接添加到我的 ListView 。 .我正在使用 Django 2 和 Django_tables2 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'),
]

如果我手动输入 URL,当前可以访问 DetailView。

我想使用可以使用 (viewname, args/kwargs) 输入元组的选项。

对于我试过的tables.py:

class SpeciesTable(tables.Table):
species =tables.Column(linkify=('main:species', {'name': name,'slug':species}))

这给出了 NameError: name 'species' is not defined .

species =tables.Column(linkify=('main:species', {'name': kwargs['name'],'slug':kwargs['species']}))

这给出了 NameError: name 'kwargs' is not defined .

我还尝试将以下变量更改为字符串:

species =tables.Column(linkify=('main:species', {'name': 'name','slug':'species'}))
species =tables.Column(linkify=('main:species', {'name': 'name','slug':'object.species'}))

这些尝试给出了 NoReverseMatch Reverse for 'species' with keyword arguments '{'name': 'name', 'slug': 'species'}' not found. 1 pattern(s) tried: ['genus\\/(?P<name>[^/]+)\\/species\\/(?P<species>[-a-zA-Z0-9_]+)$']

将其格式化为以下任一格式将给出 SyntaxError :

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 您希望它用于某个值的值。您不能为此使用变量(例如 namespecies,因为您希望从每条记录中检索它们。

所以使用访问器(通常缩写为 A),您的第一个示例如下所示:

class SpeciesTable(tables.Table):
species = tables.Column(linkify=('main:species', {'name': tables.A('name'),'slug': tables.A('species')}))

Accessors 的概念可以在多个地方使用,也可以更改要在列中呈现的值。

我建议定义 get_absolute_url不过,您的模型上的方法。这很好,因为通常当你想显示模型的链接时,你有它的一个实例,所以在模板中,对于 linkify 参数到 django-tables2 列,您大多可以使用 linkify=True

您对 linkify 上的文档的看法是正确的,它们当然需要改进。

关于django - 在 Django_tables2 列上使用 linkify 选项来创建链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52133275/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com