View代码
from app01.myforms import *
from django.shortcuts import render, HttpResponse, redirect
from django.http import JsonResponse
from app01.models import UserInfo
from django.forms import widgets
from django.forms import ModelForm
# Create your views here.
class UserInfoModeform(ModelForm):
class Meta:
model = UserInfo
fields = ['name', 'pwd', 'email', 'tel']
# exclude = ['create_date']
labels = {'name': '姓名', 'pwd': '密码', 'email': '邮箱', 'tel': '电话'}
widgets = {
'name': widgets.TextInput(attrs={'class': 'layui-input'}),
'pwd': widgets.PasswordInput(attrs={'class': 'layui-input'}),
'email': widgets.EmailInput(attrs={'class': 'layui-input'}),
'tel': widgets.TextInput(attrs={'class': 'layui-input'}),
}
def reg(request):
if request.method == 'POST':
#
usermodeform = UserInfoModeform(request.POST)
if usermodeform.is_valid():
usermodeform.save()
else:
# > 校验不通过也返回页面, 以及form对象里面校验的错误信息
print(usermodeform.cleaned_data)
return JsonResponse(usermodeform.errors)
# return render(request, 'app01.html', locals())
return redirect('/acc_index/')
form = UserInfoModeform()
return render(request, 'app01.html', {'form': form})
def acc_index(request):
form = UserInfoModeform()
all_user_info = UserInfo.objects.all()
return render(request, 'index.html', locals())
def edit_info(request, edit_id):
user_obj = UserInfo.objects.filter(pk=edit_id).first()
if request.method == 'POST':
# instance 争对这个对象进行修改
form = UserInfoModeform(data=request.POST, instance=user_obj)
if form.is_valid():
form.save()
return redirect('/acc_index/')
form = UserInfoModeform(instance=user_obj)
return render(request, 'app01.html', locals())
index.html部分
<body>
<div class="layui-row m-top">
<div class="layui-col-md8 layui-col-md-offset2">
<a href="/reg/"><button type="button" class="layui-btn layui-btn-sm">新增用户</button></a>
<table class="layui-table">
<thead>
<tr>
<th>序号</th>
{% for field in form %}
<th>{{ field.label }}</th>
{% endfor %}
<th>生成日期</th>
<th>信息编辑</th>
</tr>
</thead>
<tbody>
{% for data in all_user_info %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{ data.name }}</td>
<td>**********</td>
<td>{{ data.email }}</td>
<td>{{ data.tel }}</td>
<td>{{ data.create_date }}</td>
<td>
<a href="/edit_info/{{ data.pk }}/">
<button class="layui-btn layui-btn-xs layui-btn-normal">编辑</button>
</a>
<button class="layui-btn layui-btn-xs layui-btn-danger">删除</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</body>
编辑和添加的 html部分
<body>
<!-- 方式二渲染 -->
<div class="layui-row m-top">
<div class="layui-col-md4 layui-col-md-offset4">
<form action="" method="post" class="layui-form">
{% csrf_token %}
{% for field in form %}
<div class="layui-form-item">
<label for="" class="layui-form-label">{{ field.label }}</label>
<div class="layui-input-block">
{{ field }}
<!-- 提交后,后端校验数据如果失败, 返回页面的时候会带错误提示 -->
{% if field.name == "pwd" %}
<span>{{ field.errors.0 }}{{ errors.0 }}</span>
{% else %}
<span>{{ field.errors.0 }}</span>
{% endif %}
</div>
{% endfor %}
<div class="layui-form-item">
<div class="layui-input-block">
<input type="submit" value="提交" class="layui-btn">
<!-- <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button> -->
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
<hr>
<script>
layui.use('form', function () {
var form = layui.form;
//提交
form.on('submit(formDemo)', function (data) {
layer.msg(JSON.stringify(data.field));
return false;
});
});
</script>
</body>