zoukankan      html  css  js  c++  java
  • Flask入门 flask结构 url_for 重定向(一)

    Flask入门(一)

    1 安装虚拟环境Mac,linux

    sudo pip install virtualenv  
    

    ​ ubuntu系统

    sudo apt-get install python-virtualenv
    

    2 安装flask

    1 python3 环境下全局安装
    pip3 install flask
    
    2 虚拟环境下virtualenv下安装
    首先先创建env虚拟环境
    mkdir myproject   #新建项目目录
    cd myproject
    virtualenv venv   #安装虚拟文件目录venv
    
    source /venv/bin/activate #启动新项目
    pip3 install flask
    
    注:部分编辑器创建虚拟环境,Python的解释路径需要更改.
    
    3 pycharm中运行flask,选择flask创建project,一定要加载创建的虚拟环境,找到虚拟环境目录设置python解释器,设置项目目录
    

    3 flask初起航

    3.1最简单的flask程序
    from flask import Flask   #导入类Flask
    app = Flask(__name__) #类的实例是WSGI应用程序App
    
    # route() 装饰器把一个函数绑定到对应的 URL 上
    @app.route('/')
    def hello():
    	return 'hello python'
    
    #主函数入口	
    if __name__ == '__main__':
    	app.run()
    	
    注:
    (1)  __name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块hello.py
    ,那么此模块名字__name__就是__main__,通过if判断这样就可以执行“__mian__:”后面的主函数内容;
    假如此模块是被import导入的,则此模块名字__name__为文件名 : hello,
    通过if判断这样就会跳过“__mian__:”,不执行后面的函数.
    (2) 启动参数:
         debug   默认为False   True  debug=True不能用于生产环境
         port    指定端口号  默认5001
         host    指定主机名   host='0.0.0.0'  所有公网ip均可访问
         threaded  线程  True
    (3) 包括 Flask类引入,Flask类实例app,绑定路由,定义函数,设置主函数这5个过程.
    (4) debug = True 可以进入debug模式,既可以不重启服务加载,又可以显示页面错误信息.
    
    3.2 配置文件
    1 新建一个config.py文件
    2 在主app文件中导入这个文件,并且配置到app中,示例代码如下
      import config
      app.config.from_object(config)
    3 还有很多其他的参数,都是放在改配置文件中,如SECRET_KEY等
    

    4 flask参数与变量

    4.1 变量
    1 变量作为参数传递: 语法<variable_name>
    
    #(单个参数)
    @app.route('/find_girl/<name>')
    #视图名称
    def findGirl(name):
        return 'Hello girl,name is {}'.format(name)
    #(多个参数)
    @app.route('/find_girl/<name>/<age>')
    #视图名称
    def findGirl(name,age):
        return 'Hello girl,name is {},age is {}'.format(name,age)
    
    4.2 参数类型
    (1) string 默认就为字符串 
    (2) int     限制传递进来的参数为 int类型 不做类型的转换
    (3) float   限制传递进来的参数为 float类型 不做类型的转换
    (4) path    将请求的路由地址后面的所有参数 都认为是一个参数的值 不再做路由的查找
    
    @app.route('/arg_type/<string:arg>') #传递进来的数据 都更改为n字符串
    @app.route('/arg_type/<int:arg>')    #限制传递数据类型为int
    @app.route('/arg_type/<float:arg>')  #限制传递数据类型为float
    @app.route('/arg_type/<path:arg>/')  #将路由地址后面的所有 都认为是参数
    

    5 构造响应与抛出异常

    5.1 构造响应
    下面我们来讲下构造响应:
    构造响应通过导入  from flask import make_response
    可以使用 render_template() 方法来渲染模板  404模板页面 : error.html
    
    @app.route('/res')
    def res():
    	response = make_response(render_template('error.html'), 404)
    	return response
    浏览器页面结果:  响应结果	
    
    5.2 抛出异常
    需要引入abort   from flask import abort    先抛出错误状态码再捕获
    
    #抛出500错误码
    @app.route('/look_meizi/')
    def look_meizi():
        abort(500)
    
    #捕获指定的404状态码  支持错误页面的定制
    @app.errorhandler(404)
    def page_not_found(e):
        return '你请求的地址被外星人挟持走了!!!'
    
    #捕获500服务器错误状态码
    @app.errorhandler(500)
    def server_error(e):
        return e
    

    6 重定向与构造URL

    6.1 重定向
    需要 from flask import redirect
    
    def myRedirect():
    	#重定向到res绑定的URL
         return redirect('/res')
         #或者重定向带参数的URL
         return redirect('/find_girl/name')
    
    6.2 构造URL(URL反转):
    • 在页面重定向中会使用url反转,url_for('hello')可以找到hello视图函数对应的路由
    • 在模板中,也会使用url反转.
    如果 Flask 能匹配 URL,那么 Flask 可以生成它们吗?当然可以
    构造URL通过引入   from flask import url_for
    
    @app.route('/redirect/')
    def myRedirect():
        #url_for 重定向接路由地址,redirect重定向到改地址,因此一般组合用起来很方便
        
        #url_for 构造无参url
        # return redirect(url_for('hello'))
        #url_for 构造带参url,这样不管find_girl的路由怎么变,都可以重定向至该页面
        return redirect(url_for('find_girl',name='goodsunck'))
    
    
  • 相关阅读:
    windows 远程连接报错
    这30类CSS选择器 你必须记在脑袋里!
    Print to the console in django without UnicodeEncodeErrors
    基于md5的解决js,css缓存问题for django
    Django开发经验
    vscode常用的插件
    点击时添加不同的类
    jQuery 点击空白,隐藏元素
    多功能日历插件:Kalendae
    jQuery中的data()方法
  • 原文地址:https://www.cnblogs.com/why957/p/9102622.html
Copyright © 2011-2022 走看看