import time
from flask import Flask, render_template, request, make_response, redirect, url_for, abort, session
from flask_script import Manager
# 导入蓝本
from user import user
#注册app
app = Flask(__name__)
# 前面是固定格式,后面是加密规则,设置session之前必须要添加这一句,否则会报错
app.config['SECRET_KEY']='abcde'
# 注册蓝本
# url_prefix指的是在使用user蓝本的时候,要添加一个user前缀,(下面括号中的)user后面不要加 "/"
# 这样就可以防止路由重复引起的冲突,蓝本相当于django中的路由的拆分
app.register_blueprint(user,url_prefix="/user")
# app注册给manage管理
# 参数的说明,
# -h host 指定主机
# -p port 指定端口
# -d Debug 开启debug模式
# -r run 自动加载
# python3 manage.py runserver -h -d
# 注册manage后,就可以通过 python3 manage.py runserver -h -d方式启动
manage=Manager(app)
@app.route('/index/')
def index():
return '<h1>hello 1111</h1>'
# 传参数的方式,默认为字符串
# 如果要指定类型,如下面的其他含函数
@app.route('/welcom/<name>')
def welcom(name):
return 'welcomme:%s'%name
# 指定参数的类型为整型,后面只能输入整型的参数,如果输入其他类型的参数会找不到页面
@app.route('/getid/<int:uid>')
def getid(uid):
return render_template("haha.html",uid=uid)
# path参数,其实与普通参数区别在于path后面的所有字符当成了一个字符串
# 例如 path/ha/haha ,后面的ha/haha会当成一个字符串而不会像其他域名一样
# 以/为分割
@app.route('/path/<path:p>')
def getp(p):
return p
# 测试请求
@app.route('/request/')
def req():
# url返回的是完整的路径,接受get参数
# return request.url
# base_url也是返回完整的路径,但是不接受get参数
# return request.base_url
# host_url返回主机地址和端口号
# return request.host_url
# 返回路由的路径
# return request.path
# 返回请求的方法,可以用在页面表单等的请求,判断是post还是get
# return request.method
# 获取客户端的ip,可以用来限制某些不合法的ip的访问
# return request.remote_addr
# 获取get的参数
# return request.args['username']
# 获取请求,外面的中括号不是小括号
return request.headers["User-Agent"]
# 响应
@app.route('/response/')
def respon():
# 返回自定义的状态码,返回成功的默认是200,通过这个可以修改状态重定向
# return "NOT FOUND",404
# 构造一个响应
resp = make_response("这是一个通过构造函数自定义的响应,服务器去月球了,等会再来",202)
return resp
# 重定向
@app.route("/redirect/")
def red():
#传统模式的重定向
# return "这是一个重定向"
# return redirect('/response/')
# url_for是一个反向解析的函数,里面参数是视图函数名
# url_for返回的是视图函数的路由名,其参数是想要返回的路由对应的函数名
# return redirect(url_for("respon"))
# 带参数的解析,参数是视图函数的名字,所需要的参数放在url_for里面
return redirect(url_for("welcom",name="haha"))
# 终止函数
@app.route("/absort/")
def err():
# 立即向客户端抛出404的错误
# 后面的代码不会再执行
abort(404)
# 定制错误页的函数
@app.errorhandler(404)
def page_not_found(e):
# e为默认参数
# 这个函数相当于重写系统的404
return "互相折磨到白头,微笑坚决不放手"
# 会话控制
# 1.设置cookie
@app.route("/set_cookie/")
def set_cookie():
resp = make_response('cookie已经设置成功,请放心使用')
# 设置cookie过期时间
expires = time.time()+10
resp.set_cookie('name','一动不动',expires=expires)
return resp
# 获取cookie
@app.route("/get_cookie/")
def get_cookie():
# flask支持的语法,如果前面为空,则取后面的值
cookies = request.cookies.get("name") or '你是谁?'
return cookies
# 设置session
# 设置session一定要在session之前添加app.config['SECRET_KEY']='abcde'
@app.route("/set_session/")
def set_session():
session["username"]='小马,二傻'
return "session设置成功"
@app.route("/get_session/")
def get_session():
# 这样的表达方式的解析:如果username的session不存在,则显示第二个参数
# 第二个参数是一个默认值,如果不给,会出现错误的.
return session.get("username","哈哈哈哈哈哈")
@app.route("/del_session/")
def del_session():
del session['username']
return "session删除成功"
if __name__ == '__main__':
# debug为是否开启调试模式,默认为false,不调试,debug为调试,每次修改会自动重启
# port为设置端口号,默认为5000
# host为指定ip地址
app.run(debug=True,port=9900,host="0.0.0.0")
from flask import Flask, render_template, request, make_response, redirect, url_for, abort, session
from flask_script import Manager
# 导入蓝本
from user import user
#注册app
app = Flask(__name__)
# 前面是固定格式,后面是加密规则,设置session之前必须要添加这一句,否则会报错
app.config['SECRET_KEY']='abcde'
# 注册蓝本
# url_prefix指的是在使用user蓝本的时候,要添加一个user前缀,(下面括号中的)user后面不要加 "/"
# 这样就可以防止路由重复引起的冲突,蓝本相当于django中的路由的拆分
app.register_blueprint(user,url_prefix="/user")
# app注册给manage管理
# 参数的说明,
# -h host 指定主机
# -p port 指定端口
# -d Debug 开启debug模式
# -r run 自动加载
# python3 manage.py runserver -h -d
# 注册manage后,就可以通过 python3 manage.py runserver -h -d方式启动
manage=Manager(app)
@app.route('/index/')
def index():
return '<h1>hello 1111</h1>'
# 传参数的方式,默认为字符串
# 如果要指定类型,如下面的其他含函数
@app.route('/welcom/<name>')
def welcom(name):
return 'welcomme:%s'%name
# 指定参数的类型为整型,后面只能输入整型的参数,如果输入其他类型的参数会找不到页面
@app.route('/getid/<int:uid>')
def getid(uid):
return render_template("haha.html",uid=uid)
# path参数,其实与普通参数区别在于path后面的所有字符当成了一个字符串
# 例如 path/ha/haha ,后面的ha/haha会当成一个字符串而不会像其他域名一样
# 以/为分割
@app.route('/path/<path:p>')
def getp(p):
return p
# 测试请求
@app.route('/request/')
def req():
# url返回的是完整的路径,接受get参数
# return request.url
# base_url也是返回完整的路径,但是不接受get参数
# return request.base_url
# host_url返回主机地址和端口号
# return request.host_url
# 返回路由的路径
# return request.path
# 返回请求的方法,可以用在页面表单等的请求,判断是post还是get
# return request.method
# 获取客户端的ip,可以用来限制某些不合法的ip的访问
# return request.remote_addr
# 获取get的参数
# return request.args['username']
# 获取请求,外面的中括号不是小括号
return request.headers["User-Agent"]
# 响应
@app.route('/response/')
def respon():
# 返回自定义的状态码,返回成功的默认是200,通过这个可以修改状态重定向
# return "NOT FOUND",404
# 构造一个响应
resp = make_response("这是一个通过构造函数自定义的响应,服务器去月球了,等会再来",202)
return resp
# 重定向
@app.route("/redirect/")
def red():
#传统模式的重定向
# return "这是一个重定向"
# return redirect('/response/')
# url_for是一个反向解析的函数,里面参数是视图函数名
# url_for返回的是视图函数的路由名,其参数是想要返回的路由对应的函数名
# return redirect(url_for("respon"))
# 带参数的解析,参数是视图函数的名字,所需要的参数放在url_for里面
return redirect(url_for("welcom",name="haha"))
# 终止函数
@app.route("/absort/")
def err():
# 立即向客户端抛出404的错误
# 后面的代码不会再执行
abort(404)
# 定制错误页的函数
@app.errorhandler(404)
def page_not_found(e):
# e为默认参数
# 这个函数相当于重写系统的404
return "互相折磨到白头,微笑坚决不放手"
# 会话控制
# 1.设置cookie
@app.route("/set_cookie/")
def set_cookie():
resp = make_response('cookie已经设置成功,请放心使用')
# 设置cookie过期时间
expires = time.time()+10
resp.set_cookie('name','一动不动',expires=expires)
return resp
# 获取cookie
@app.route("/get_cookie/")
def get_cookie():
# flask支持的语法,如果前面为空,则取后面的值
cookies = request.cookies.get("name") or '你是谁?'
return cookies
# 设置session
# 设置session一定要在session之前添加app.config['SECRET_KEY']='abcde'
@app.route("/set_session/")
def set_session():
session["username"]='小马,二傻'
return "session设置成功"
@app.route("/get_session/")
def get_session():
# 这样的表达方式的解析:如果username的session不存在,则显示第二个参数
# 第二个参数是一个默认值,如果不给,会出现错误的.
return session.get("username","哈哈哈哈哈哈")
@app.route("/del_session/")
def del_session():
del session['username']
return "session删除成功"
if __name__ == '__main__':
# debug为是否开启调试模式,默认为false,不调试,debug为调试,每次修改会自动重启
# port为设置端口号,默认为5000
# host为指定ip地址
app.run(debug=True,port=9900,host="0.0.0.0")