亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

flask入門3-表單

lijy91 / 1566人閱讀

摘要:表單一原生表單原生表單用戶名請(qǐng)輸入用戶名密碼請(qǐng)輸入密碼提交接收表單的數(shù)據(jù)提交過來了將倆個(gè)路由地址合并為同一個(gè)二使用表單擴(kuò)展庫作用是一個(gè)用于表單處理的擴(kuò)展庫提供表單的校驗(yàn)的功能使用字段類型字段名稱字段類型普通文本字段密碼框提交按鈕多行文本

flask 表單 一、原生表單

form.html

{% extends "common/base.html" %}
{% block title %}
    原生表單
{% endblock %}
{% block pagecontent %}
{#    
#}

用戶名:

密碼:

{% endblock %}

manage.py

@app.route("/form/")
def form():
    return render_template("form1.html")

#接收表單的數(shù)據(jù)
@app.route("/check/",methods=["POST"])
def check():
    print(request.form)
    return "提交過來了"

將倆個(gè)路由地址合并為同一個(gè)

@app.route("/form/",methods=["GET","POST"])
def form():
    if request.method == "POST":
        print(request.form)
    return render_template("form1.html")
二、使用flask-wtf表單擴(kuò)展庫

作用: 是一個(gè)用于表單處理的擴(kuò)展庫 提供表單的校驗(yàn) csrf的功能

pip install flask-wtf

使用 (1) 字段類型
字段名稱 字段類型
StringField 普通文本字段
PasswordField 密碼框
SubmitField 提交按鈕
TextAreaField 多行文本域
HiddenField 隱藏域
DateField 日期
DateTimeField 日期時(shí)間
IntegerField 整形
FloatFIeld 浮點(diǎn)型
RadioField 單選字段
SelectField 下拉
FileField 文件上傳字段
BooleanField 布爾字段
(2) 驗(yàn)證器
驗(yàn)證器 說明
DataRequired 必填
Length 長度 min max
IPAddress IP地址
Email 郵箱
URL 地址
Regexp 正則匹配
EqualTo 驗(yàn)證倆個(gè)字段值的正確性
NumberRange 輸入值的范圍 min max

實(shí)例

在manage中

from flask import Flask,render_template,request
from flask_script import Manager
from flask_bootstrap import Bootstrap
#導(dǎo)入自定義表單類的基類
from flask_wtf import FlaskForm
#導(dǎo)入表單的字段
from wtforms import StringField,PasswordField,SubmitField
#導(dǎo)入驗(yàn)證器
from wtforms.validators import Length,DataRequired


app = Flask(__name__)
bootstrap = Bootstrap(app)
#加密種子 csrf需要使用
app.config["SECRET_KEY"] = "abcdedff"
manager = Manager(app)

class Login(FlaskForm):
    username = StringField("用戶名",validators=[Length(min=6,max=12,message="用戶名的長度為6~12為"),DataRequired(message="用戶名不能為空!!!")])
    userpass = PasswordField("密碼",validators=[Length(min=6,max=12,message="用戶名的長度為6~12為"),DataRequired(message="密碼不能為空!!!")])
    submit = SubmitField("登錄")

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/form/",methods=["GET","POST"])
def form():
    #將表單類實(shí)例化
    form = Login()
    if request.method == "POST":
        #驗(yàn)證是否存在正確的csrftoken和 數(shù)據(jù)的正確性 如果都正確則為真
        if form.validate_on_submit():
            # print(request.form)
            print(form.username.data)
    return render_template("form2.html",form=form)
在模板中
{% extends "common/base.html" %}
{% block title %}
    原生表單
{% endblock %}
{% block pagecontent %}
    

{{ form.csrf_token }}

{{ form.username.label() }} {{ form.username(style="color:red;",class="userclass",placeholder="請(qǐng)輸入用戶名") }} {% if form.errors%} {{ form.errors.username.0 }} {% endif %}

{{ form.userpass.label() }} {{ form.userpass() }}

{{ form.submit() }}

{% endblock %}
使用 bootstrap渲染表單
{% import "bootstrap/wtf.html" as wtf %}
{% block pagecontent %}
    
圖片
{{ wtf.quick_form(form,action="",method="") }}
{% endblock %}
自定義表單驗(yàn)證器
class Login(FlaskForm):
    ...
    def validate_username(self,field):
        # print(field)
        if field.data == "zhangsan":
        # if self.username.data == "zhangsan":
            raise ValidationError("該用戶已存在")

注意:

validate_ 驗(yàn)證的字段名稱 為固定格式

所有字段和驗(yàn)證器方法的使用

class Login(FlaskForm):
    username = StringField("用戶名",validators=[Length(min=6,max=12,message="用戶名的長度為6~12為"),DataRequired(message="用戶名不能為空!!!")])
    userpass = PasswordField("密碼",validators=[Length(min=6,max=12,message="用戶名的長度為6~12為"),DataRequired(message="密碼不能為空!!!"),EqualTo("confirm",message="倆次密碼輸入不一致")])
    confirm = PasswordField("確認(rèn)密碼")
    info = TextAreaField("個(gè)人簡介",validators=[Length(min=6,max=20,message="內(nèi)容為6-20個(gè)長度"),DataRequired(message="內(nèi)容不能為空")],render_kw={"style":"resize:none;","placeholder":"請(qǐng)輸入你此刻的感謝..."})
    hidde =  HiddenField()
    birth = DateField("出生日期")
    birth = DateTimeField("出生日期")
    age = IntegerField("年齡",validators=[NumberRange(min=6,max=99,message="年齡為6~99歲")])
    money = FloatField()

    sex = RadioField(choices=[("w","女"),("m","男")])
    address = SelectField(choices=[("1001","北京"),("1002","上海"),("1003","天津")])

    file = FileField("文件上傳")

    argee = BooleanField("請(qǐng)仔細(xì)閱讀以上條款")

    ip = StringField("IPV4",validators=[IPAddress(message="請(qǐng)輸入正確的ip地址")])
    url = StringField("url地址",validators=[URL(message="輸入正確的url地址")])
    email = StringField("email",validators=[Email(message="請(qǐng)輸入正確的郵箱地址")])
    preg = StringField("手機(jī)號(hào)碼",validators=[Regexp("^[1][3-8][0-9]{9}$",flags=re.I,message="請(qǐng)輸入正確的手機(jī)號(hào)碼")])
    submit = SubmitField("登錄")
三、flash 消息的顯示

概述: 當(dāng)用戶請(qǐng)求 或者有消息的顯示 通過flash,get_flashed_messages 來進(jìn)行操作

導(dǎo)入

from flask import flash,get_flashed_messages

from flask import flash,get_flashed_messages

class Login(FlaskForm):
    username = StringField("用戶名",validators=[DataRequired(message="用戶名不能為空")])
    userpass = PasswordField("密碼",validators=[DataRequired(message="密碼不能為空")])
    submit = SubmitField("登錄")

@app.route("/form/",methods=["GET","POST"])
def form():
    form = Login()
    if form.validate_on_submit():
        if form.username.data == "zhangsan" and form.userpass.data == "123456":
            flash("登錄成功")
            return redirect(url_for("index"))
        else:
            flash("當(dāng)前用戶不存在")
    return render_template("user/login.html",form=form)

使用

{% for message in get_flashed_messages() %}
    
{% endfor %}

flask入門4-文件上傳與郵件發(fā)送

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/41840.html

相關(guān)文章

  • flask入門1

    摘要:每天的內(nèi)容跑起來模板引擎表單文件上傳郵件發(fā)送一框架的簡介模型負(fù)責(zé)數(shù)據(jù)的操作視圖負(fù)責(zé)數(shù)據(jù)的展示控制器控制你的的操作以及視圖模板的渲染在中叫做模型負(fù)責(zé)數(shù)據(jù)的操作控制你的的操作以及視圖模板的渲染業(yè)務(wù)邏輯的操作模板負(fù)責(zé)數(shù)據(jù)的展示二架構(gòu)三概念是 flask 每天的內(nèi)容 flask跑起來 模板引擎 flask表單 文件上傳郵件發(fā)送 flask-sqlalchemy 一、web框架的簡介 M ...

    Freelander 評(píng)論0 收藏0
  • flask入門4-文件上傳與郵件發(fā)送

    摘要:文件上傳郵件發(fā)送一原生文件上傳修改頭像提交文件上傳的視圖函數(shù)有文件上傳了拿到文件名稱圖片上傳保存的路徑使用和渲染文件上傳自定義一個(gè)文件上傳的表單類修改頭像文件不能為空該文件類型不允許上傳提交生成隨機(jī)的圖片名稱獲取圖片大小設(shè)置尺寸當(dāng)前縮放 文件上傳郵件發(fā)送 一、原生文件上傳 form.html 修改頭像 manage.py...

    vvpale 評(píng)論0 收藏0
  • Flask-WTF進(jìn)階和WTForms擴(kuò)展

    摘要:和都是很好用的插件,然而當(dāng)它們結(jié)合到一起后,就不是那么美妙了。當(dāng)然了寫一個(gè)完整的擴(kuò)展還是很麻煩的??梢钥垂俜綌U(kuò)展的源碼。。。 Flask-WTF和Flask-SQLAlchemy都是很好用的插件,然而當(dāng)它們結(jié)合到一起后,就不是那么美妙了。 問題的提出 在models.py中定義了一個(gè)Article、Category和Tag類: class Article(db.Model): ...

    zone 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<