在HTML属性为readonly而不是禁用的情况下,可以通过以下步骤使Django表单字段成为只读字段:
widget.attrs['readonly'] = 'readonly'
属性。这将在渲染表单时将该字段的HTML属性设置为readonly。{{ form.field_name }}
来显示该字段。这将根据表单类中的定义自动生成相应的HTML代码。下面是一个示例:
# forms.py
from django import forms
class MyForm(forms.Form):
field_name = forms.CharField()
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['field_name'].widget.attrs['readonly'] = 'readonly'
# views.py
from django.shortcuts import render
from .forms import MyForm
def my_view(request):
form = MyForm()
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
# 处理表单数据
return render(request, 'my_template.html', {'form': form})
# my_template.html
<form method="post">
{% csrf_token %}
{{ form.field_name }}
<input type="submit" value="Submit">
</form>
在上述示例中,MyForm
类的field_name
字段被设置为只读字段。在模板中,使用{{ form.field_name }}
来渲染该字段。在视图函数中,处理POST请求时,需要注意只读字段不会被提交,因此需要在处理之前将只读字段的值设置为原始值。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云