2022暑期实践(Django教程学习记录)(第二周2)P31用户添加P32Form和ModelForm组件

P30,用户添加(原始方法)

{% extends 'layout.html' %}

{% block content %}

<div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">新建用户</h3>
            </div>
            <div class="panel-body">
                <form action="/user_add/" method="POST">
                    {% csrf_token %}
                    <div class="form-group">
                        <label>姓名</label>
                        <input type="text" class="form-control"  name="name" placeholder="姓名">
                    </div>
                    <div class="form-group">
                        <label>密码</label>
                        <input type="text" class="form-control"  name="password" placeholder="密码">
                    </div>
                    <div class="form-group">
                        <label>年龄</label>
                        <input type="text" class="form-control"  name="age" placeholder="年龄">
                    </div>
                    <div class="form-group">
                        <label>余额</label>
                        <input type="text" class="form-control"  name="account" placeholder="余额">
                    </div>
                    <div class="form-group">
                        <label>入职时间</label>
                        <input type="text" class="form-control"  name="time" placeholder="入职时间">
                    </div>
                    <div class="form-group">
                        <label>性别</label>
                        <select class="form-control" name="gender">
                        {% for item in gender_choices %}
                            <option value="{{ item.0 }}">{{ item.1 }}</option>
                        {% endfor %}
                        </select>
                    </div>
                    <div class="form-group">
                        <label>所属部门</label>
                        <select class="form-control" name="department">
                        {% for item in depart_list %}
                            <option value="{{ item.id }}">{{ item.title }}</option>
                        {% endfor %}
                        </select>
                    </div>
                    <button type="submit" class="btn btn-default">提交</button>
                </form>
            </div>
        </div>
    </div>

{% endblock %}
def user_add(request):
    if request.method == "GET":
        context = {
            'gender_choices': models.UserInfo.gender_choices,
            'depart_list': models.Department.objects.all(),
        }
        return render(request, 'user_add.html', context)
    else:
        name = request.POST.get('name')
        password = request.POST.get('password')
        age = request.POST.get('age')
        account = request.POST.get('account')
        time = request.POST.get('time')
        gender = request.POST.get('gender')
        department = request.POST.get('department')
        models.UserInfo.objects.create(
            name=name,
            password=password,
            age=age,
            account=account,
            create_time=time,
            gender=gender,
            department_id=department,
        )
        return redirect('/user_list/')

P31,Form和ModelForm组件
存在的问题:
用户提交的数据没有校验(可能为空,非法)
错误没有错误提示
每一个字段都需要重新写一遍
关联的数据需要手动获取展示在前端页面
Django组件
Form(小简便)上面前三项
ModelForm(最简便)

def MyForm(Form):
	user = forms.CharField(widget=forms.Input)
	pwd = forms.CharField(widget=forms.Input)
	email = forms.CharField(widget=forms.Input)
def user_add(request):
	if request.method == 'GET':
		form = MyForm()
		return render(reqeust, 'user_add.html, {'form': form})

Form优化

<form method="POST">
	{{ form.user }}
	{{ form.pwd }}
	{{ form.email }}
	<!--自动生成-->
	<input type="text" placeholder="姓名" name="user" />
</form>
<!--更简单的写法-->
<form method="POST">
	{% for field in form %}
		{{ field }}
	{% endfor %}
	<input type="text" placeholder="姓名" name="user" />
</form>

ModelForm(数据库操作)

class MyForm(ModelForm):
	# 自定义字段
	xx = form.CharField('')
	model = UserInfo
	fields = {"name", "password", "age"}  
def user_add(request):
	if request.method == 'GET':
		form = MyForm()
		return render(reqeust, 'user_add.html, {'form': form})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值