【问题标题】:Overwrite an Existing Template Tag method in Django 1.8在 Django 1.8 中覆盖现有的模板标记方法
【发布时间】:2015-12-24 12:58:16
【问题描述】:

我正在尝试对 Django 管理中的更改列表进行一些 CSS 自定义。更具体地说,表结果。

我正在尝试向表格的tds 添加一些 CSS 和标记。

问题是那部分代码隐藏在模板标签内 (django/contrib/admin/templatetags/admin_list.py) 而不是模板本身 (/templates/admin/change_list_results.html)

我能够覆盖模板并进行一些更改,但我真的需要知道如何将模板标签“继承”到我的项目目录,而不是直接将更改应用到 Django 的模板标签目录。

我尝试遵循这些建议,但至少没有一个对我有用。

Extending Django Admin Templates - altering change list

我发现需要在admin_list.py 内部的items_for_result 方法内部进行更改。

问题是这是如何被覆盖的? items_for_result 是一个内部方法,它没有在标签库中注册,所以它不能从模板中调用。

那么:我如何覆盖它并告诉 Django 不要使用旧方法,而是使用我指定的方法?

【问题讨论】:

    标签: python django


    【解决方案1】:

    这种改变恐怕不是那么容易做到的。要覆盖此方法,您需要修改 Django 源代码。不过不推荐。

    如果只是 CSS/HTML 更改,您可以通过使用 JavaScript 添加样式来实现。有一种简单的方法可以通过创建自定义表单并将新的 JS 文件添加到 Meta 类来将自定义 JS 添加到管理员。

    查看docs 和示例here

    【讨论】:

    • 感谢 Coffee 先生,是的,我最近一直在使用表单并编写自己的小部件。这解决了我的问题,尽管在不覆盖源代码的情况下覆盖任何 Django 类或方法会很好。
    猜你喜欢
    • 2012-10-24
    • 1970-01-01
    • 2013-05-22
    • 2015-02-14
    • 2011-07-24
    • 2019-08-11
    • 2020-02-18
    • 2014-08-30
    • 2017-08-23
    相关资源
    最近更新 更多