ModelForm案例

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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值