gpt4 book ai didi

python - 如何在我的自定义小部件模板中包含内置的 django 小部件模板?

转载 作者:行者123 更新时间:2023-12-02 11:18:20 26 4
gpt4 key购买 nike

我正在我的应用程序中编写一个 Django 小部件。但是,由于小部件是 <textarea> 的扩展我想在其中包含 Django Textarea 小部件:django/forms/templates/django/forms/widgets/textarea.html .

我试过这个:

<div name="{{ widget.name }}"{% include "django/forms/widgets/textfield.html" %}>
{% if widget.value %}{{ widget.value }}{% endif %}
</div>

但是,它导致了以下错误:
TemplateDoesNotExist at /admin/myApp/myModel/add/

我应该如何引用 include声明到正确的模板文件?

最佳答案

表格.py

from my_app.widgets import CustomTextArea
class MyForm(ModelForm):
message = forms.CharField(max_length=500,widget=CustomTextArea(attrs={'cols': 10,'rows': 3,'class':'form-control'}),required=True,help_text=_('The max length of the text is 500.'))
小部件.py
from django import forms
class CustomTextArea(forms.Textarea):
template_name = 'django/forms/widgets/textfield.html'
请创建 textfield.html在模板文件夹中 my_app如果需要,请使用正确的路径。我遵循此位置( my_app/templates/django/forms/widgets/textfield.html )。使用此代码时必须遵循此位置。
文本框.html
第一 方法:只显示正确的小部件而不是在 html 中改变。
{% include "django/forms/widgets/textarea.html" %}
{% if widget.value %}{{ widget.value }}{% endif %}
等于:
<textarea name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
{% if widget.value %}{{ widget.value }}{% endif %}</textarea>
第二 方法:我们可以渲染 <textarea>...</textarea>如内 div 。然后,
<div>
{% include "django/forms/widgets/textarea.html" %}
{% if widget.value %}{{ widget.value }}{% endif %}
</div>
等于:
    <div>
<textarea name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
{% if widget.value %}{{ widget.value }}{% endif %}</textarea>
</div>

关于python - 如何在我的自定义小部件模板中包含内置的 django 小部件模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60095510/

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