通过阿里云建设企业网站,德阳建设网站的公司,如何打破违法网站,js 网站简体繁体flask实现一个登录界面
基础的Flask项目结构
forms.py#xff1a;定义登录表单和表单字段的文件。templates/login.html#xff1a;用于渲染登录表单的 HTML 模板文件。routes.py#xff1a;定义应用的路由和视图函数的文件。__init__.py#xff1a;创建并初始化 Flask 应…
flask实现一个登录界面
基础的Flask项目结构
forms.py定义登录表单和表单字段的文件。templates/login.html用于渲染登录表单的 HTML 模板文件。routes.py定义应用的路由和视图函数的文件。__init__.py创建并初始化 Flask 应用的文件。run.py启动应用的文件。
/myproject/myproject__init__.pyroutes.pyforms.py/templateslogin.html/staticrun.py
安装 Flask 和 Flask-WTF (一个用于处理表单的 Flask 扩展)
pip install flask flask-wtf创建表单的定义 (forms.py):
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequiredclass LoginForm(FlaskForm):username StringField(Username, validators[DataRequired()])password PasswordField(Password, validators[DataRequired()])submit SubmitField(Login)
这个文件中我们定义了一个名为 LoginForm 的类它代表登录表单。这个表单有两个字段username 和 password这两个字段都使用了 DataRequired 验证器意味着这两个字段是必填的。在表单的最后我们还定义了一个 submit 字段它是一个提交按钮。
创建一个 HTML 模板来渲染表单 (templates/login.html):
html
bodyform methodPOST{{ form.hidden_tag() }}p{{ form.username.label }}br{{ form.username(size32) }}/pp{{ form.password.label }}br{{ form.password(size32) }}/pp{{ form.submit() }}/p/form
/body
/html
这个 HTML 文件定义了一个表单它使用 POST 方法提交。这个表单的每个字段都来自 LoginForm 类。我们使用了 Flask-WTF 提供的特殊语法 {{ form.field_name }} 来渲染这些字段。使用这种方式Flask-WTF 会自动处理字段的渲染包括字段的验证错误等。
在 routes.py 文件中定义一个路由以处理表单的提交和页面的渲染 from flask import Flask, render_template, flash, redirect, url_for
from .forms import LoginFormapp Flask(__name__)
app.config[SECRET_KEY] you-will-never-guessapp.route(/login, methods[GET, POST])
def login():form LoginForm()if form.validate_on_submit():flash(Login requested for user {}, remember_me{}.format(form.username.data, form.remember_me.data))return redirect(url_for(login))return render_template(login.html, titleSign In, formform)
在这个文件中我们首先创建了一个 Flask 应用并且设置了一个名为 ‘SECRET_KEY’ 的配置项这个配置项用于启用所有 Flask 和某些其扩展的加密功能。
然后我们定义了一个名为 login 的视图函数。这个函数首先创建了一个 LoginForm 实例然后检查这个表单是否通过了所有的验证即所有的字段都已填写。如果表单通过了验证我们会显示一条消息然后重定向到登录页。否则我们会渲染登录模板并将表单传递给模板。
form.validate_on_submit()是Flask-WTF扩展提供的一个方便的方法它将处理表单提交的所有事务。
当你在视图函数中调用form.validate_on_submit()它将会做两件事
它首先检查请求方法是否是 POST 或 PUT这两种方法常常用于提交表单。在 HTTP 协议中GET 请求通常用于获取数据而 POST 和 PUT 请求通常用于提交数据。如果请求方法是 POST 或 PUT那么 validate_on_submit() 进一步调用 form.validate() 来运行每个字段的验证器。这些验证器是在你的 Form 类中定义的例如在 LoginForm 中的 DataRequired。如果所有的字段都通过了验证form.validate() 将返回 True否则返回 False。
所以如果 form.validate_on_submit() 返回 True那么这意味着客户端发起了一个 POST 或 PUT 请求且所有的字段都已填写通过验证。这是提交表单的一个常见模式。
在__init__.py中引入并初始化 Flask 应用和路由
from flask import Flask
from .routes import app
创建一个run.py来启动应用
from myproject import appif __name__ __main__:app.run(debugTrue)
补充
FlaskForm或者更准确地说它的基类 Form的字段类型由 WTForms 库提供。以下是一些常用的字段类型
StringField用于处理 input typetext 类型的 HTML 表单元素。PasswordField用于处理 input typepassword 类型的 HTML 表单元素。TextAreaField用于处理 textarea 类型的 HTML 表单元素。HiddenField用于处理 input typehidden 类型的 HTML 表单元素。DateField用于处理含有 date 数据的表单元素。DateTimeField用于处理含有 datetime 数据的表单元素。IntegerField用于处理 input typenumber 类型的 HTML 表单元素。DecimalField用于处理含有 decimal 数据的表单元素。FloatField用于处理含有 float 数据的表单元素。BooleanField用于处理 input typecheckbox 类型的 HTML 表单元素。RadioField用于处理 input typeradio 类型的 HTML 表单元素。SelectField用于处理 select 类型的 HTML 表单元素。SelectMultipleField用于处理可以选择多个选项的 select 类型的 HTML 表单元素。FileField用于处理 input typefile 类型的 HTML 表单元素。SubmitField用于处理 input typesubmit 类型的 HTML 表单元素。
所有这些字段都可以附加一个或多个验证器如 DataRequired、Length、Email 等用于验证用户输入的数据。
你可以选择使用这些字段中的任何一个来创建你的表单。只需在你的 FlaskForm 子类中定义一个类变量并将其设置为你选择的字段类型的实例即可。例如username StringField(Username, validators[DataRequired()])。