Python 未将Form.media注入模板中
我编写了一个简单的应用程序,它是一个用于夹层的自定义DateField小部件。好吧,这是一个简单的例子,除了过度扩展模板之外,在纯django或django cms中也是一样的(如果我错了,请随时纠正我)。 小部件:Python 未将Form.media注入模板中,python,django,django-templates,mezzanine,Python,Django,Django Templates,Mezzanine,我编写了一个简单的应用程序,它是一个用于夹层的自定义DateField小部件。好吧,这是一个简单的例子,除了过度扩展模板之外,在纯django或django cms中也是一样的(如果我错了,请随时纠正我)。 小部件: class DatePickerInput(forms.DateInput): def __init__(self, attrs = None, format = None): super(DatePickerInput, self).__init__(attrs, for
class DatePickerInput(forms.DateInput):
def __init__(self, attrs = None, format = None):
super(DatePickerInput, self).__init__(attrs, format)
self.attrs["class"] = "datepicker"
class Media:
css = { "all": ('css/ui-lightness/jquery-ui-1.10.3.custom.min.css',) }
js = (
"mezzanine/js/" + getattr(settings, "JQUERY_UI_FILENAME", "jquery-ui-1.9.1.custom.min.js"),
"js/datepicker_setup.js",)
我过度扩展base.html模板以插入form.media:
{% overextends "base.html" %}
{% load pages_tags mezzanine_tags i18n future staticfiles %}
{% block extra_head %}{{ block.super }}
{{ form.media }}
{% endblock %}
现在,我为我的模型类创建了一个表单。
下面是课程:
class PlayerProfile(models.Model):
user = models.OneToOneField("auth.User")
# Can be later changed to use a setting variable instead of a fixed date
date_of_birth = models.DateField(default=date(1990, 1, 1))
以下是模型表格:
from DateWidgets.widgets import DatePickerInput
from PlayerProfiles.models import PlayerProfile
class EditPlayerProfileForm(Html5Mixin, forms.ModelForm):
class Meta:
model = PlayerProfile
fields = ("date_of_birth", )
widgets = { 'date_of_birth': DatePickerInput }
def __init__(self, *args, **kwargs):
super(EditPlayerProfileForm, self).__init__(*args, **kwargs)
以下是观点:
@login_required
def profile_update(request, template="accounts/account_profile_update.html"):
"""
Profile update form.
"""
pform = forms.EditPlayerProfileForm
player_form = pform(request.POST or None, request.FILES or None, instance=request.user.playerprofile)
context = {"pform": player_form, "title": _("Update Profile"), "profile_user": request.user}
return render(request, template, context)
以下是模板:
{% overextends "accounts/account_profile_update.html" %}
{% load i18n mezzanine_tags %}
{% block main %}
<fieldset>
<legend>{{ title }}</legend>
<form method="post"{% if pform.is_multipart %} enctype="multipart/form-data"{% endif %}>
{% fields_for pform %}
<div class="form-actions">
<input class="btn btn-primary btn-large" type="submit" value="{{ title }}">
</div>
</form>
</fieldset>
{% endblock %}
{%overextends“accounts/account\u profile\u update.html”%}
{%load i18n夹层标签%}
{%block main%}
{{title}}
{%pform%}
{%endblock%}
现在,如果我在浏览器中查看表单,自定义小部件就在那里(我可以判断,因为输入html标记有我的自定义类属性值),但是它没有注入表单媒体,它丢失了。知道这是怎么回事吗?提前谢谢!干杯:-)
表单在模板中不可用,因为您调用了表单变量pform
试试{{pform.media}}
我被谷歌搜索到在不同条件下出现相同的问题,并发现在其他条件下可能出现的另一个错误(我的案例是在Django 2.1中扩展change\u form.html
):我不得不使用extrahead
而不是extrahead
{% block extrahead %}{{ block.super }}
{{ form.media }}
{% endblock %}