python - 是否可以为 Django 中的每个表单域添加/删除 HTML 属性
问题描述
我的目标是从我的 django 应用程序中的每个表单字段中删除所需的标签。
我想删除所需的 html 属性,因为我有自己的错误处理并且我不想要所需的 html 工具提示。
问题是我已经安装了一些 3rd 方库,我也想从他们的表单中删除它。
我考虑过创建一个自定义的 Formrenderer,但我不确定你如何或者你有其他想法。
解决方案
我们可以在方法中设置任何 html 属性__init__
。
您还可以使用self.fields
迭代字段。有关示例,请参见以下表格:
from django import forms
from django.utils.translation import gettext_lazy as _
class ExampleForm(forms.Form):
q = forms.CharField(required=False, label=_('Search'))
l = forms.CharField(required=False, label=_('Location'))
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["q"].disabled = True
self.fields["q"].required = True
self.fields["q"].widget.attrs["readonly"] = True
self.fields['q'].widget.attrs['id'] = 'search_type'
self.fields['q'].widget.attrs['autocomplete'] = 'off'
self.fields['q'].widget.attrs['placeholder'] = _("Function, Keyword or Company")
self.fields['q'].widget.attrs.update({'class':"browser-default material-ignore search-input"})
# iterate over fields
for field in self.fields:
self.fields[field].required = False
更新
您还可以使用 javascript(jQuery 或其他东西)在客户端删除所需的属性。如果要在服务器端禁用它,则必须覆盖django-allauth
表单。
django-allauth有很好的文档。
您可以覆盖 django-allauth 中的某些表单,请参见以下示例:
from allauth.account.forms import SignupForm, LoginForm
class MyCustomLoginForm(LoginForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# iterate over fields
for field in self.fields:
self.fields[field].required = False
def login(self, *args, **kwargs):
# Add your own processing here.
# You must return the original result.
return super(MyCustomLoginForm, self).login(*args, **kwargs)
class MyCustomSignupForm(SignupForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# iterate over fields
for field in self.fields:
self.fields[field].required = False
def save(self, request):
# Ensure you call the parent class's save.
# .save() returns a User object.
user = super(MyCustomSignupForm, self).save(request)
# Add your own processing here.
# You must return the original result.
return user
设置.py:
ACCOUNT_FORMS = {
'login': 'mysite.forms.MyCustomLoginForm',
'signup': 'mysite.forms.MyCustomSignupForm'
}
推荐阅读
- java - 如何让程序也能识别大写字母?
- python - Python Spark - 阈值后删除数据 - Pyspark
- php - Divi 中的错误与 php.ini
- c++ - 使用 -(archives -) gcc 命令
- azure-logic-apps - 是逻辑应用发送电子邮件活动还是任何其他支持动态帐户登录?
- c# - 为什么这个 System.IO.Pipelines 代码比基于 Stream 的代码慢得多?
- matlab - 在 Simulink Real-Time 的 M 文件 S-Function 中使用 C-Mex 函数
- python - SyntaxError:python中标识符错误中的无效字符
- arrays - Perl:index() 不适用于像 $array[$i] 这样的变量
- python - 为什么 tkinter 应用程序没有定位在 (0, 0)?