标签:响应 定向 登录 model let run 转换 告诉 shell
Flask是一个Web框架,就是提供一个工具,库和技术来允许你构建一个Web应用程序。这个Web应用程序可以是一些Web页面,博客,wiki,基于Web的日里应用或商业网站。
Flask属于微框架(micro-framework)这一类别,微架构通常是很小的不依赖外部库的框架。
- 框架很轻量
- 更新时依赖小
- 专注于安全方面的bug
<form action="{{ url_for(‘wtf_form‘) }}" method=‘post‘>
{{ form.csrf_token }} #进入csrf验证
<p>{{ form.username.label }}{{ form.username(style=‘color:red‘,placeholder=‘请输入用户名‘) }}{{ form.username.errors }}</p>
<p>{{ form.userpass.label }}{{ form.userpass() }}{{ form.userpass.errors }}</p>
<p>{{ form.submit() }}</p>
</form>
from flask import Flask,render_template,request
from flask_wtf import FlaskForm #导入继承父类
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import Length,DataRequired
class Login(FlaskForm): #继承自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(‘/wtf_form‘,methods=[‘GET‘,‘POST‘])
def wtf_form():
form = Login() #实例化form对象
if request.method == ‘POST‘:
if form.validate_on_submit(): #数据正确 并且验证csrf通过
print(request.form.get(‘userpass‘))
print(request.form.get(‘username‘))
return ‘数据提交成功‘
return render_template(‘wtf_form.html‘,form=form)
#注:
#1 methods 参数告诉Flask在URL映射中把这个视图函数注册为GET和POST请求的处理程序,默认GET
#2 采用post请求可以通过对象很轻松访问,GET 请求没有主体,提交的数据以查询字符串的形式附加到URL中
#3 validate_on_submit() 会调用username 字段上附属的 DataRequired() 验证函数。
from flask import session
导入会话对象session[‘name‘] = ‘admin‘
给会话添加变量,也可以使用session.get(‘name’)获取值。 session.pop(‘username‘, None)
删除会话的变量REST是一种Web架构风格,它有六条准则:
1.客户端-服务端(Client-Server)
2.无状态(Stateless)
3.可缓存(Cachable)
4.分层系统(Layered System)
5.统一接口(Uniform Interface)
6.支持按需代码(Code-on-Demand,可选)
只要满足以上六条准则的Web架构可以说是Restful的。
9. 列举Http请求中常见的请求方式?
GET / POST/DELETE
1xx —— 元数据 2xx —— 正确的响应 3xx —— 重定向 4xx —— 客户端错误 5xx —— 服务端错误 100 Continue。客户端应当继续发送请求。 200 OK。请求已成功,请求所希望的响应头或数据体将随此响应返回。 201 Created。请求成功,并且服务器创建了新的资源。 301 Moved Permanently。请求的网页已永久移动到新位置。 服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置。 302 Found。服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 400 Bad Request。服务器不理解请求的语法。 401 Unauthorized。请求要求身份验证。对于需要登录的网页,服务器可能 返回此响应。 403 Forbidden。服务器拒绝请求。 404 Not Found。服务器找不到请求的网页。 500 Internal Server Error。服务器遇到错误,无法完成请求。
蓝图Blueprint实现模块化的应用
- book_bp = Blueprint(‘book‘, __name__)
创建蓝图对象
- 蓝图中使用路由@book_bp.route(‘url‘)
- 在另一.py文件里导入和注册蓝图from book import book_bp
app.register_blueprint(book_bp)
每次有请求过来的时候,flask 会先创建当前线程或者进程需要处理的两个重要上下文对象,把它们保存到隔离的栈里面,这样视图函数进行处理的时候就能直接从栈上获取这些信息。
请求进来时,可以根据URL的不同,交给不同的APP处理
WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证。
Flask的默认session利用了Werkzeug的SecureCookie,把信息做序列化(pickle)后编码(base64),放到cookie里了。
过期时间是通过cookie的过期时间实现的。
为了防止cookie内容被篡改,session会自动打上一个叫session的hash串,这个串是经过session内容、SECRET_KEY计算出来的,看得出,这种设计虽然不能保证session里的内容不泄露,但至少防止了不被篡改
概念: 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。
详细介绍: 让我们从O/R开始。字母O起源于”对象”(Object),而R则来自于”关系”(Relational)。几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。
当你开发一个应用程序的时候(不使用O/R Mapping),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等。你在DAL中写了很多的方法来读取对象数据,改变状态对象等等任务。而这些代码写起来总是重复的。
ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。
ORM技术特点:
1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。
2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。
标签:响应 定向 登录 model let run 转换 告诉 shell
原文地址:https://www.cnblogs.com/jiadi321/p/9902164.html