首页 > 其他分享 >Flask入门

Flask入门

时间:2023-11-11 20:34:55浏览次数:33  
标签:index return 入门 get Flask app GET methods

总结

1 三板斧:
	-return 字符串								HttpResponse
	-return render_template('index.html')	  render
	-return redirect('/login')				  redirect
2 路由写法(路径,支持的请求方式,别名)
@app.route('/login',methods=['GET','POST'],endpoint='别名')
3 模板语言渲染
	-同dtl,但是比dtl强大,支持加括号执行,字典支持中括号取值和get取值
4 分组(django中的有名分组)
    @app.route('/detail/<int:nid>',methods=['GET'])
    def detail(nid):
5 反向解析
	-url_for('别名')
    
6 获取前端传递过来的数据
	# get 请求
		request.query_string
  	# post请求
      user = request.form.get('user')
      pwd = request.form.get('pwd')

配置文件

方式一

app.config['DEBUG'] = True
PS: 由于Config对象本质上是字典,所以还可以使用		app.config.update(...)

方式二

#通过py文件配置
app.config.from_pyfile("python文件名称")
如:
settings.py
DEBUG = True

方式三(最好用的)

app.config.from_object('settings.TestingConfig')  想要用哪个配置改名字即可
app.config.from_object('settings.DevelopmentConfig')

# 创建一个新的py文件在里边写
class Config(object):
    DEBUG = False
    TESTING = False
    DATABASE_URI = 'sqlite://:memory:'


class ProductionConfig(Config):
    DATABASE_URI = 'mysql://user@localhost/foo'


class DevelopmentConfig(Config):
    DEBUG = True


class TestingConfig(Config):
    TESTING = True

路由系统

1 基本使用			    转换器
@app.route('/detail/<int:nid>',methods=['GET'],endpoint='detail')
# 把nid要传进去 /detail/1
def detail(nid):
    user = session.get('user_info')
    if not user:
        return redirect('/login')

    info = USERS.get(nid)
    return render_template('detail.html',info=info)

转换器

DEFAULT_CONVERTERS = {
    'default':          UnicodeConverter,
    'string':           UnicodeConverter,
    'any':              AnyConverter,
    'path':             PathConverter,
    'int':              IntegerConverter,
    'float':            FloatConverter,
    'uuid':             UUIDConverter,
}

路由的本质

1 本质就是:app.add_url_rule()
2 endpoint(别名):如果不写默认是函数名,endpoint不能重名

app.add_url_rule参数

@app.route和app.add_url_rule参数:
rule, URL规则
view_func, 视图函数名称
defaults = None, 默认值, 当URL中无参数,函数需要参数时,使用defaults = {'k': 'v'}
为函数提供参数
endpoint = None, 名称,用于反向生成URL,即: url_for('名称')
methods = None, 允许的请求方式,如:["GET", "POST"]
#对URL最后的 / 符号是否严格要求,默认严格,False,就是不严格
strict_slashes = None
    '''
        @app.route('/index', strict_slashes=False)
        #访问http://www.xx.com/index/ 或http://www.xx.com/index均可
        @app.route('/index', strict_slashes=True)
        #仅访问http://www.xx.com/index
    '''
#重定向到指定地址
redirect_to = None, 
    '''
        @app.route('/index/<int:nid>', redirect_to='/home/<nid>')
    '''

CBV(但是大部分flask还是用FBV)

from flask import Flask,request,render_template,redirect
from flask import views

app=Flask(__name__)


# class IndexView(views.View):
#     methods = ['GET']
#     # decorators = [auth, ]
#     def dispatch_request(self):
#         print('Index')
#         return 'Index!'

# 自定义装饰器
def auth(func):
    def inner(*args, **kwargs):
        print('before')
        result = func(*args, **kwargs)
        print('after')
        return result

    return inner


class IndexView(views.MethodView):
    methods = ['GET']  # 指定运行的请求方法
    # 登录认证装饰器加在哪?
    decorators = [auth, ]  #加多个就是从上往下的效果
    def get(self):
        print('xxxxx')
        return "我是get请求"
    def post(self):
       return '我是post请求'

# 路由如何注册?
# IndexView.as_view('index'),必须传name
app.add_url_rule('/index',view_func=IndexView.as_view('index'))

if __name__ == '__main__':
    app.run()
    
# 总结
    用的比较少
    继承views.MethodView,只需要写get,post,delete方法
    如果加装饰器decorators = [auth, ]
    允许的请求方法methods = ['GET'] 

标签:index,return,入门,get,Flask,app,GET,methods
From: https://www.cnblogs.com/piggthird/p/17826302.html

相关文章

  • CTF show——misc入门(1-15)
    misc1一点开即得flagmisc2一点开发现是PNG格式,所以将文件格式后缀改为png,便可得到flag。misc3直接用Honeyview打开即可的flagmisc4下载好文件将文件改为png.格式同上题一样,用Honeyview打开,连起来即可得flagmisc5一打开显示的是noflag然后使用010Editor......
  • Flask-MySQLdb与Flask-SQLAlchemy
    Flask-MySQLdb和Flask-SQLAlchemy是Flask中用于与MySQL数据库交互的两个不同的扩展。它们有不同的使用方式和优劣势。Flask-MySQLdb:用法:fromflaskimportFlaskfromflask_mysqldbimportMySQLapp=Flask(__name__)app.config['MYSQL_HOST']='your_mysq......
  • misc入门
    打开为图片形式,打开虚拟机运用binwalk分析文件再输入ddif........( if=文件名:输入文件名,缺省为标准输入。即指定源文件,of=文件名:输出文件名,缺省为标准输出。即指定目的文件)2. 打开为图片格式 用010editor打开图片搜索ctf即可得到flag3.打开为图片格式然后打开虚拟......
  • 3.1 IDA Pro编写IDC脚本入门
    IDAPro内置的IDC脚本语言是一种灵活的、C语言风格的脚本语言,旨在帮助逆向工程师更轻松地进行反汇编和静态分析。IDC脚本语言支持变量、表达式、循环、分支、函数等C语言中的常见语法结构,并且还提供了许多特定于反汇编和静态分析的函数和操作符。由于其灵活性和可扩展性,许多逆向工......
  • 3.1 IDA Pro编写IDC脚本入门
    IDAPro内置的IDC脚本语言是一种灵活的、C语言风格的脚本语言,旨在帮助逆向工程师更轻松地进行反汇编和静态分析。IDC脚本语言支持变量、表达式、循环、分支、函数等C语言中的常见语法结构,并且还提供了许多特定于反汇编和静态分析的函数和操作符。由于其灵活性和可扩展性,许多逆向工......
  • 3.1 IDA Pro编写IDC脚本入门
    IDAPro内置的IDC脚本语言是一种灵活的、C语言风格的脚本语言,旨在帮助逆向工程师更轻松地进行反汇编和静态分析。IDC脚本语言支持变量、表达式、循环、分支、函数等C语言中的常见语法结构,并且还提供了许多特定于反汇编和静态分析的函数和操作符。由于其灵活性和可扩展性,许多逆向工......
  • Java零基础入门-表达式
    前言Java作为一门面向对象的编程语言,具有广泛的应用场景,尤其在后端开发方面,具有非常高的市场需求。因此,Java的学习对于初学者来说是非常重要的。本文将从表达式的角度,帮助Java零基础的读者了解Java的基本语法,为进一步学习打下良好的基础。摘要本文主要讲解Java中表达式的概念和......
  • C语言入门:基本语法
    如果你刚刚接触到C语言,而且感到自己写不出代码,别灰心,这是正常的学习过程。学习编程是一个渐进的过程,不要急于求成。通过不断的实践和学习,你会发现编程变得越来越容易。当你刚开始学习C语言时,最好从一个简单的"Hello,World!"程序开始,这是学习任何编程语言的传统入门方式。以下是一......
  • python flask虚拟环境 uwsgi nginx Supervisor 宝塔面板部署
    安装部署对应的python版本1.安装虚拟环境插件virtualenvpipinstallvirtualenv2.创建虚拟环境virtualenv/www/wwwroot/项目/envvirtualenv+路径3.激活虚拟环境source/www/wwwroot/项目/env/bin/activate4.退出虚拟环境的指令deactivate这里不用管,需要退出的时......
  • 萌新中的杂项1-6+8、misc入门5-7
    杂项1 题目直接给出了flag misc2 下载之后一直点进去会以png的形式出现一张图片,将该文件另存为或者用记事本打开,点进去翻到最下面会出现lag{ctfshow_im_coming},这时再加一个f就ok了misc3 该题由题目就可以大致知道答案,银行密码为6位,提到了生日和小五,密码就一定为这些......