django admin template overriding not working

uwopmtnx  于 2023-04-13  发布在  Go
关注(0)|答案(1)|浏览(132)

bounty将在2天后到期。回答此问题可获得+100声望奖励。Sami正在寻找来自可靠来源的答案:我已经厌倦了所有的手段,我也附上了截图从chatgpt anser.我不知道什么是失踪,因为它一直为我工作在过去,找不到任何东西git obselete在较新的django版本,但我可以无法改变默认change_form. html全局通过任何手段,

我想在我自己的django模块app1中覆盖templates/admin/change_form.html,所以按照标准,我将文件change_form.html添加到app1->templates->admin中,内容如下

{% extends "admin/change_form.html" %}
{% load i18n static %}
{% block object-tools %}
    <h3>My extended html</h3> => Not rendered until => change_form_template = 'admin/change_form1.html'
    {{ block.super }}
    <script defer="defer" src="{% static 'app1/image_preview.js' %}"></script>
{% endblock %}

admin.py (我可以通过更改每个管理员并添加giving change_form_template = 'admin/change_form1.html'来实现它,但这不是我需要的方式)

from django.contrib import admin
from .models import Model1
class Model1Admin(admin.ModelAdmin):
    # change_form_template = 'admin/change_form1.html' #overriding does not affect, but this does
    pass
admin.site.register(Model1, Model1Admin)

预期输出<h3>My extended html</h3>应该是每个change_form.html的一部分,因为当app1存在于项目中并在settings.py中安装了应用程序时,我没有在任何地方执行任何其他操作就扩展了admin/chamge_form.html

完成步骤(我已经在我的系统的默认Python中安装了Django)

  1. django-admin startproject pr1
  2. CD PR1
  3. django-admin startapp
    1.编辑了settings.py以附加一行=〉INSTALLED_APPS += ['app1']
    1.添加chnage_form. html到app 1/templates/admin
    1.进行迁移,创建超级用户,登录并打开http://127.0.0.1:8000/admin/app2/model1/add/
    完整代码https://github.com/humblesami/django-templates

编辑:Chatgpt答案

这也不起作用,你检查我的github代码。我也试图在项目的根目录中添加templates/admin,但在呈现的change_form. html中没有显示任何内容

whlutmcx

whlutmcx1#

将您的模板添加到

app1/templates/admin/change_form.html

作为

{% extends "admin/change_form.html" %}
{% load i18n static %}
{% block object-tools %}
    <h2>Preivew</h2>
    {{ block.super }}
    <script defer="defer" src="{% static 'app1/image_preview.js' %}"></script>
{% endblock %}

现在我的代码/过程中的错误/问题是将app1添加到settings.py中的应用程序列表的末尾,这不起作用,但必须在'django.contrib.admin'之前添加,因此app1/templates/admin/change_form.html将在原始admin/change_form.html之后执行,因此HTML中的自定义/更新将出现。

INSTALLED_APPS = INSTALLED_APPS + ['app1'] //does not work
//but
INSTALLED_APPS = ['app1'] + INSTALLED_APPS //works

相关问题