首先,我不是Web开发人员。 我只是想为自己编写一个简单的Web应用程序,我决定用Django来做,因为我对Python非常熟悉。 所以我真的不了解比javascript的基础知识更多。
无论如何,我的主页本质上是一个使用屏幕左侧 django-tables2 库的表格和右侧使用 chart.js 库的图表。 我已经把这两个骨架都弄好了。
但是现在我无法弄清楚将点击事件添加到表中的行中。 我想做的是每当我单击表中的行时更新图表。 我能找到的所有内容(例如:将 onclick 事件添加到表格行(让我经历了表 ID 之类的东西。 但我不知道是否有为这个表定义的表 ID。 因为我使用的是 django-tables2,所以我专门创建表的唯一行是
{% load render_table from django_tables2 %}
{% render_table table %}
我正在使用的视图看起来像
class RaceListView(SingleTableView):
model = Race
table_class = RaceTable
template_name = 'prediction.html'
我不确定这段代码是否有帮助,或者您是否需要我提供其他代码,所以只需询问是否有一些东西可以更容易地看到我在做什么。 不过,在Django中这有点困难,因为事物到处都是相互连接的。
如果有人有一个简单的例子来说明如何将点击事件添加到像这样的表格中,那就是 rad。 谢谢。
这是在HTML中生成<a ...
标签的问题。有两种方法。一种方法是提供一个手动呈现表的模板。另一种方法是在模型上创建一个属性,该属性将适当的标记生成为安全文本。类似的东西
@property
def foo_link(self):
return format_html(
'<a href="foo/detail/{pk}" class="foo_link">details</a>',
pk=self.foo.pk
)
并告诉您的表格生成器显示foo_link字段。(在查询集上,使用select_related('foo')
以避免每次使用该属性时进行查询(。
刚刚注意到您在附加点击事件而不是链接之后,但原理是一样的。使用其他地方未使用的 css 类(foo_link
上面(格式化表中的元素,并将 JQuery 或其他任何东西放入模板中以附加 onclick 事件或其他内容。添加点击处理程序所需的 attrdata-foo="{pk}"
或其他信息通常很有用。您可以使用<span class="foo_link" data-foo="{pk}">
代替<a...>
。
如果希望整行可点击,则需要将 onclick 事件附加到<tr>
标记。我不知道你是否可以将所需的 css 类传递给 django-tables2。否则,仍然可以使用表中的单元格,并且您的 JQuery 将识别周围的<tr>
并将单击处理程序附加到该单元格(如果有帮助,请复制 data-attr(。