gpt4 book ai didi

javascript - 不要从 django 表单打印媒体

转载 作者:行者123 更新时间:2023-11-30 11:34:34 26 4
gpt4 key购买 nike

我创建了一个自定义小部件并包含了一个 Media 类。

class MyWidget(forms.MultiWidget):

class Media:
css = {
'all': ('path-to-css.css',),
}
js = (
'path-to-js.js',
)

def __init__(self, visible_input_attrs=None, hidden_input_attrs=None):
widgets = (
TextInput(attrs=visible_input_attrs),
HiddenInput(attrs=hidden_input_attrs),
)
super(MyWidget, self).__init__(widgets)

def decompress(self, value):
if value:
return ['', value]
return [None, None]

在我的表单中,我按如下方式使用这个小部件

class UserForm(forms.ModelForm):

class Meta:
model = User
fields = [
'first_name',
'last_name',
'email',
'phone_number',

]
widgets = {
'phone_number': MyWidget(),
}

我的模板文件

{% extends "base.html" %}
{% load static i18n crispy_forms_tags %}

{% block content %}

<div class="row">
<div class="col-sm-12">

<form id="my-form" action="" method="post" enctype="multipart/form-data">
<h2>Contact details</h2>
{% crispy user_form %}
</form>

</div>
</div>

{% endblock content %}

{% block javascript %}
{{ block.super }}
{{ user_form.media.js }}
{% endblock %}

在我的模板文件中,我包含了带有 {% crispy user_form %} 的表单(使用 crispy 表单)。 Django 特此自动在表单开头添加CSS 和JS 文件。因为我在每个 HTML 页面的最后加载 JS 文件,并且因为包含的 path-to-js.js 文件需要 jQuery,所以我附加了 {{ user_form.media.js }} 到我模板中的 javascript block 。因此,path-to-js.js 在我的页面上出现不止一次,并导致错误消息,因为第一次加载 path-to-js.js , jQuery 尚未加载。

如何避免在使用 {% crispy user_form %}时加载JS文件?

最佳答案

在您的 helper 中设置 include_media = False类。

class UserForm(forms.ModelForm):
...

def __init__(self, *args, **kwargs):
super(UserForm, self).__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.helper.include_media = False

关于javascript - 不要从 django 表单打印媒体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45023076/

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