flask原始框架
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
将其命名为flask_test_demo.py,然后用python解释器来运行。
路由
现代Web应用的URL十分优雅,易于人们辨识记忆。route()装饰器吧一个函数绑定到对应的URL上。还可以构造含有动态部分的URL,也可以在一个函数上附着多个规则。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello World'
if __name__ == '__main__':
app.run()
变量原则
要给URL添加变量部分,可把特殊字段标记为<variable_name>,这一部分将会命名为参数传递到函数。规则可以用<converter:variable_name >指定一个可选的转化器。
from flask import Flask
app = Flask(__name__)
@app.route('/user/<username>')
def show_user_profile(username):
# show the user profile for that user
return 'User %s' % username
@app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return 'Post %d' % post_id
if __name__ == '__main__':
app.run()
转化器有int——接收整数
float 同int,但是接收浮点数
path 和默认的相似,但也接收斜线
HTTP方法
HTTP(与Web应用回话的协议)有许多不同的访问URL方法。默认情况下,路由只回应GET请求,但通过route()装饰器传递methods参数可改变这个行为。
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
do_the_login()
else:
show_the_login_form()
GET:浏览器告知服务器;只获取页面上的信息并发给我。是常用的方法
POST:浏览器告知服务器:想在URL上发布新信息。并且,服务器必须确保数据已储存且仅存储一次。这是html表单通常发送数据到服务器的方法。
DELETE:删除给定位位置的信息
OPTIONS:给客户端提供一个敏捷的途径来弄清这个URL支持哪些HTTP方法。
模板渲染
用python生成html,可以使用render_template() 方法来渲染模板。你需要做的一切就是将模板名和你想作为关键字的参数传入模板的变量。
from flask import Falsk,render_template
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)
WTF 表单
目的:实现一个简单的登录的逻辑处理
1.路由需要get和post两个请求方式——需要判断请求方式
2.获取请求的参数
3.判断参数是否填写 &密码是否相同
4.如果判断没有问题,就返回一个success
# coding:utf-8
# flash 消息闪现
from flask import Flask,render_template,request,flash
from flask_wtf import FlaskFrom
from wtforms import StringField,SubmitField,PasswordField
from wtforms.validators import DataRequired,EqualTo
app = Flask(__name__)
app.secret_key ='itheima'
# 给模板传递信息 flash 模板中需要遍历消息
#需要对内容加密,因此需要设置secret_key,做加密信息的混淆
# 使用WTF实现表单 自定义表单类
class LoginForm(FlaskForm):
username = StringField('用户名')
password = PasswordField('密码')
password2 = PasswordField('确认密码')
submit = SubmitField('提交')
@app.route('/form',methods=['GET','POST'])
def login():
login_form=LoginFrom()
return render_template('index.html',form=login_form)
@app.route('/',methods=['GET','POST'])
def index():
#request:请求对象---获取请求方式,数据
#1.判断请求方式
if request.method =='POST':
# 2.获取请求的参数
username =request.form.get('username')
password =request.form.get('password')
password2 =request.form.get('password2')
print password
#3.判断参数是否填写 &密码是否相同
if not all([username,password,password2]):
#print '参数不完整'
flash ('参数不完整')
elif password !=password2:
#print '密码不一致'
flash ('密码不一致')
else:
return 'success'
return render_template('index.html)
if __name__ == '__main__':
app.run(debug=True)