测试小站: 处理网 回收帮 培训网 富贵论坛 老富贵论坛

Python web框架 flask 笔记 (1)

  import datetime

  from flask import Flask,redirect,url_for

  from werkzeug.routing import BaseConverter

  from flask import request,jsonify,render_template

  from flask import make_response,session

  import json

  app=Flask(__name__)

  #session需要使用到的秘钥字符串

  app.config['SECRET_KEY']='3424sedfrer34rwerrwef'

  def fl():

  return 'ok3'

  #app.add_url_rule(rule=访问的url,endpoint=路由别名,view_func=视图名称,methods=[允许访问的方法])

  app.add_url_rule(rule='/kj',endpoint='name2',view_func=fl,methods=['GET'])

  #设置cookie和headers

  @app.route('/set_cookie')

  def set_cookie():

  response=make_response('

cookie

')

  #cookie有效时长30天也可以是hour second minute

  time=datetime.datetime()+datetime.timedelta(days=30)

  response.set_cookie('user','admin',expires=time)

  response.set_cookie('pass','123456',expires=time)

  response.headers['X-Something']='A value'

  response.headers['Server']='My special http server'

  return response

  #获取cookie

  @app.route('/get_cookie')

  def get_cookie():

  name="用户名:"+request.cookies.get('user')+"密码:"+request.cookies.get('pass')

  return name

  #删除cookie

  @app.route('/del_cookie')

  def del_cookie():

  response=make_response('delete cookie')

  #1.使用Response的set_cookie进行清除

  response.set_cookie('user','',expires=0)

  response.set_cookie('pass','',expires=0)

  #2.使用Response的 delete_cookie方法.

  #response=make_response('delete cookie')

  #response.delete_cookie('user')

  #response.delete_cookie('pass')

  #return response

  return response

  #设置session

  @app.route('/session1')

  def session1():

  session['user']='hw'

  session['pass']='zj'

  return 'login success'

  #获取session

  @app.route('/session2')

  def session2():

  us=session.get("user")

  pa=session.get("pass")

  return 'hello %s %s'%(us,pa)

  #返回json数据

  #1

  @app.route('/json1')

  def json1():

  data={'name':'HW','first':'ZJ'}

  return jsonify(data)

  #2

  @app.route('/json2')

  def json2():

  return jsonify(hour=12,second=21)

  #“””?自定义转换器?

  class RegexConverter(BaseConverter):

  # 重写?父类的属性,定义转换器?规则

  def __init__(self,url_map):

  super(RegexConverter,self).__init__(url_map)

  #实现验证手机号码的正则”””

  self.regex='1[34578][\d]{9}'

  #定义视图函数下的返回值

  def to_python(self,value):

  val=value

  return val

  def to_url(self,value):

  return value

  # 将?自定义的转换器?添加到转换器?列列表中

  app.url_map.converters['re']=RegexConverter

  @app.route('/new/<re:mobile_id>')

  def mobile(mobile_id):

  return 'mobile is:%s' % mobile_id

  #自动转到new下指定的手机号码

  @app.route('/index')

  def index():

  url=url_for('mobile',mobile_id='13434235453')

  return redirect(url)

  #跳转到其他地址

  @app.route('/kj/')

  def er(url):

  print(url)

  return 'ok1'

  #endpoint=路由别名

  @app.route('/',endpoint='name1')

  def first_flask(url):

  print(url_for('name1',url=url)) #如果设置了url参数,url_for(别名,加参数)

  return 'ok2'

  #request

  @app.route('/request',methods=['GET','POST'])

  def post():

  name=request.form.get('name')

  age=request.form.get('age')

  score=request.form.get('score')

  city=request.args.get('city')

  qw=json.dumps(request.cookies)

  return 'hello name=%s age=%s score=%s city=%s qw=%s'%(name,age,score,city,qw)

  #上传文件

  @app.route('/upload',methods=['GET','POST'])

  def upload():

  if request.method=='GET':

  return render_template('upload.html')

  else:

  f=request.files.get('file')

  if not f:

  return '未上传'

  #f.save(os.path.join('app/static',filename))

  else:

  f.save( f.filename)

  return '上传成功'

  if __name__=='__main__':

  app('127.0.0.1','5000')

  upload.html

  

  

  

  

请选择一个文件上传

  

  

  

  

  

  

  

posted @ 2021-12-20 15:38  linjingyg  阅读(49)  评论(0)    收藏  举报