django - modelform 方法实现 -增 - 带校验数据 | 改
1. views.py 页面
使用modelform 必须顶一个类 class BumenModelForm(forms.ModelForm):
使用所有字段 : fields = '__all__' # fields = ['name' , 'pwd'] 使用字段
批量生成样式
from django import forms class BumenModelForm(forms.ModelForm): class Meta: model = models.Bumen fields = '__all__' # 给input 添加插件 def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) for name, field in self.fields.items(): field.widget.attrs = {'class': 'form-control','placeholder':field.label} def bumen_add(request): if request.method =='GET': form = BumenModelForm() return render(request, 'bumen_add.html', {'form': form}) # POST 校验数据 form = BumenModelForm(data=request.POST) if form.is_valid(): form.save() return redirect('/bumen_list/') return render(request, 'bumen_add.html', {'form': form})
2. add.html 页面代码
提示错误 : {{ item.errors.0 }}
提示信息 : {{ item.label }}
{% extends 'layout.html' %}
{% block content %}
<h2> 添加部门 </h2>
<form method="post" novalidate>
{% csrf_token %}
{% for item in form %}
<div class="form-group">
<label for="exampleInputEmail1"><span style="color: red">*</span> {{ item.label }} </label>
{{ item }} <span style="color: red; font-size: small">{{ item.errors.0 }} </span>
</div>
{% endfor %}
<button type="submit" class="btn btn-default">提交</button>
</form>
{% endblock %}
3. models.py
返回链表中的字段名称 :
# 部门表 class Bumen(models.Model): title = models.CharField(max_length=32, verbose_name='部门') def __str__(self): return self.title
数据修改
# 部门编辑 from django import forms class BumenModelForm(forms.ModelForm): class Meta: model = models.Bumen fields = '__all__' # 给input 添加插件 def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) for name, field in self.fields.items(): field.widget.attrs = {'class': 'form-control'} def bumen_edit(request, nid): # 查询获取对象 使用显示默认值 row_obj = models.Bumen.objects.filter(id=nid).first() if request.method =='GET': # 获取编辑id 的数据 对象 # instance=row_obj 显示编辑框中的 默认值 form = BumenModelForm(instance=row_obj) return render(request, 'bumen_edit.html', {'form': form}) # 校验编辑数据 instance=row_obj ->指定需要修改的数据 无此代码 是新增数据 form = BumenModelForm(data=request.POST, instance=row_obj) if form.is_valid(): form.save() return redirect('/bumen_list/') return render(request, 'bumen_edit.html', {'form': form})
临时笔记 : 给 input 添加 type = ‘text ’ 样式 | 可以空出时间 来自己写样式



浙公网安备 33010602011771号