Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 未将Form.media注入模板中_Python_Django_Django Templates_Mezzanine - Fatal编程技术网

Python 未将Form.media注入模板中

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

我编写了一个简单的应用程序,它是一个用于夹层的自定义DateField小部件。好吧,这是一个简单的例子,除了过度扩展模板之外,在纯django或django cms中也是一样的(如果我错了,请随时纠正我)。 小部件:

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 %}