Flask第一天学习

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")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值