zoukankan      html  css  js  c++  java
  • Django--form保存用户输入内容

    需求

    用户提交form时,如果报错,页面中的用户信息还在(除了密码),没有被刷新掉,不用用户再次输入。


    速查

    views.py

    1
    2
    3
    def login(request):
        obj = django表单生成文件.类(request.POST)     #创建form实例化,request.POST默认=空
        return render(request,'请求的html',{'obj':obj})


    知识点

    • request.POST默认=

    • html中form提交method="post"是小写Django中request.method判断时候"POST"是大写,因为Django自己调用了uper方法。

    • 报错刷新页面时,实例化的form表单中应该有数据,即request.POST



    详细

    1、准备一个Django-form登录框

    path

    templates/login.html
    1
    2
    3
    4
    5
    <form action="/login/" method="post">
        <p>{{ obj.username }}</p>
        <p>{{ obj.password }}</p>
        <input type="submit" value="submit" />
    </form>
    app01/forms/account.py
    1
    2
    3
    4
    5
    from django import forms
     
    class LoginForm(forms.Form):
        username = forms.CharField()
        password = forms.CharField(widget=forms.PasswordInput())
    app01/views/account.py
    1
    2
    3
    4
    5
    from app01.forms import account as AccountForm
     
    def login(request):
        obj = AccountForm.LoginForm()
        return render(request,'account/login.html',{'obj':obj})

    2、进一步演化

    请求发送后,form表单中有了提交的所有数据,如果报错,会把所有提交的信息返回原来的页面中,不用再次输入。

    app01/views/account.py
    1
    2
    3
    4
    5
    6
    def login(request):
        if request.method == 'POST':
            input_obj = AccountForm.LoginForm(request.POST)
            return render(request,'account/login.html',{'obj':input_obj})
        obj = AccountForm.LoginForm()
        return render(request,'account/login.html',{'obj':obj})

    3、代码简化​

    默认request.POST为空,当提交请求时,obj中就带了提交的信息,返回页面。

    app01/views/account.py

    1
    2
    3
    4
    5
    def login(request):
        obj = AccountForm.LoginForm(request.POST)
        if request.method == 'POST':
            return render(request,'account/login.html',{'obj':obj})
        return render(request,'account/login.html',{'obj':obj})



























  • 相关阅读:
    13.字符串压缩算法
    12.字符串全部替换指定文本
    46.数字到字符串的转换
    45.切割字符串并精确分配内存
    44.字符串删除指定字符或者字符串
    11.表达式计算对一串加减乘除带括号进行计算
    43.可变参数实现printf
    关于float与double区别
    float,double与long long哪个更大?
    double 与0比较时有个精度问题,有时需精确到小数点后面几位,例如与>0.0001,而不能与>0比较
  • 原文地址:https://www.cnblogs.com/daliangtou/p/5305753.html
Copyright © 2011-2022 走看看