2022暑期实践(Django教程学习记录)(第二周4)P33用户添加错误提示P34今日概要

P33,用户添加错误提示
设置错误信息为中文,setting.py

几个小问题:
设置错误信息为中文:

# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'en-hans'

把时间搞成可以点击选择的插件

<input type="date"  />

在widgets入职时间中添加
attrs = {“type”: “Date”}s

views.py

from django import forms


class UserModelForm(forms.ModelForm):
    # 设置校验条件
    name = forms.CharField(min_length=3, label="用户名")
    # password = forms.CharField()
    class Meta:
        model = models.UserInfo
        fields = ['name', 'password', 'age', 'account', 'gender', 'department', 'create_time']
        widgets = {
            "create_time": forms.TextInput(attrs={'type': 'date'}),
        }
        # 可以用widgets 添加前端样式,可以用,比较麻烦
        # widgets = {
        #     "name": forms.TextInput(attrs={'class': 'form-control'}),
        #     "password": forms.TextInput(attrs={'class': 'form-control'}),
        # }
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for name, field in self.fields.items():
            print(name, field)
            # 跳过不加样式:
            # if name == "password":
            #     continue
            field.widget.attrs = {'class': 'form-control', 'placeholder': field.label}


def user_add_modelform(request):
    if request.method == 'GET':
        form = UserModelForm()
        print(form)
        return render(request, 'user_add_modelform.html', {"form": form})
    else:
        form = UserModelForm(data=request.POST)
        if form.is_valid():
            print(form.cleaned_data)
            form.save()
            return redirect('/user_list/')
        else:
            print(form.errors)
            return render(request, 'user_add_modelform.html', {"form": form})

user_add_modelform.html

{% extends 'layout.html' %}


{#    <h3>models添加用户</h3>#}
{#    <form method="POST" action="/user_add_modelform/">#}
{#        {% csrf_token %}#}
{#        <div>#}
{#            <p>手动写</p>#}
{#            <p>{{ form.name.label }}{{ form.name }}</p>#}
{#            <p>{{ form.password.label }}{{ form.password }}</p>#}
{#            <p>{{ form.age.label }}{{ form.age }}</p>#}
{#        </div>#}

{#        <div>#}
{#        <p>自动循环生成</p>#}
{#        {% for field in form %}#}
{#            <p>{{ field.label }}:{{ field }}</p>#}
{#        {% endfor %}#}
{#        </div>#}
{#        <div>#}
{#    </form>#}


{% block content %}
    <div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">新建用户ModelForm</h3>
            </div>
            <div class="panel-body">
                {#                novalidate关闭浏览器校验#}
                <form action="/user_add_modelform/" method="POST" novalidate>
                    {% csrf_token %}
                    {% for field in form %}
                        <div class="form-group">
                            <label>
                                {{ field.label }}
                                <span style="color: red">{{ field.errors.0 }}</span>
                            </label>

                            {{ field }}
                        </div>
                    {% endfor %}
                    <button type="submit" class="btn btn-default">提交</button>
                </form>
            </div>
        </div>
    </div>

{% endblock %}

P34,今日概要
ModelForm,针对数据库操作
Form,后面聊
编辑步骤:
点击编辑,传递ID
编辑页面,(默认数据,根据ID获取数据写入对应位置)
提交:
错误提示
数据校验
在数据库中更新

views.py

def user_edit(request, nid):
    # 根据nid去数据库获取对应的数据
    row_object = models.UserInfo.objects.filter(id=nid).first()
    # 自动校验
    form = UserModelForm(instance=row_object)
    return render(request, 'user_edit.html', {'form': form})

user_add.html

{% 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">
                {#                novalidate关闭浏览器校验#}
                <form action="/user_add_modelform/" method="POST" novalidate>
                    {% csrf_token %}
                    {% for field in form %}
                        <div class="form-group">
                            <label>
                                {{ field.label }}
                                <span style="color: red">{{ field.errors.0 }}</span>
                            </label>

                            {{ field }}
                        </div>
                    {% endfor %}
                    <button type="submit" class="btn btn-default">提交</button>
                </form>
            </div>
        </div>
    </div>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值