zoukankan      html  css  js  c++  java
  • python框架之Flask基础篇(一)

    一.第一个hello world程序

    # coding=utf-8
    from flask import Flask
    
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    
    
    if __name__ == '__main__':
        app.run(debug=True)

    1.app参数的设置:

     以下几种方式全部拿debug模式举例:
    .方式一:将参数设置到app.config字典中:

    app.config["DEBUG"] = True

    .方式二:加载文件:  
      1. 先在根目录下创建一个config.py文件,然后写入DEBUG = True 
      2. 然后在含有app文件中设置参数:

    app.config.from_pyfile("config.py")

    .方式三:加载对象(实际开发中一般用这个):  
      1. 先在根目录下创建一个config.py文件,然后写入如下代码:

    class Config(object):
        DEBUG = True

      2. 在app文件中导入config文件中的Config类。  
      3. 然后设置:

    app.config.from_object("Config")

    .方式四:app的属性

    app.debug = True
    

    也可以 

    app.run(debug=True)
    

    但是这种方式不同用,只是针对debug模式可以这样设置。 

    2.取app.config参数中的值:

     1)app.config.get("DEBUG")

       2)current_app.config.get("DEBUG")

       3)Config.DEBUG

     

    二.路由的各种定义方式

    1.路由的查找方式:

    2.flask中内置的路由转换器(路由传参的几种形式)

     a.系统默认的类型default就是string类型,也就是说进行路由的参数匹配的时候,系统默认会将参数当作string类型进行匹配。下面举例说明:

     1 @app.route('/<str>')
     2 def print_str(str):
     3     print type(str)    # 结果为:<type 'unicode'>
     4     return str
     5 
     6 
     7 @app.route('/<string:str>')
     8 def print_str1(str):
     9     print type(str)    # 结果为:<type 'unicode'>
    10   return str
     1 @app.route('/<any(hello,python,java,"javascript:;"):str>')
     2 def print_any(str):   # 只能匹配括号里面的数据,并且引号里面的数据可以随意写
     3     print type(str)
     4     return str
     5 
     6 
     7 @app.route('/<path:str>')     # http://localhost:5000/path/str
     8 def print_path(str):
     9     print type(str)
    10     return str    # 结果为:path/str
    11 
    12 
    13 @app.route('/<int:str>')    # 页面传过来的数据(字符串类型)在这里直接转换为int类型
    14 def print_int(str):
    15     print type(str)    # <type 'int'>
    16     return str(str)     # 此时将数据返回给页面的时候必须转换为字符串类型
    17 
    18 @app.route('/<float:str>')  # 只有当页面传递过来的是小数float转换器才起作用
    19 def print_float1(str):
    20     print type(str)    # <type 'float'>
    21     return str(str)

    b.     uuid是32位16进制的数字。

    3.路由的重定向

      1)重定向的方法是redirect()常常和url_for一起使用。比如:redirect(url_for(“视图函数的方法名”))

    4.返回Json数据的两种方法:

      1)json.dumps("字典")

      2)jsonify("字典")

    第一种方法仅仅是将字典转换为字符串返回给页面,响应头的Content-Type为text/html。

    第二种方法是将字典转换为json返回给页面,响应头的Content-Type为application/json。这是开发中比较常用的方法。

    现在的需求是用第一种方法还要达到第二种方法的效果,代码为:

    return json.dumps(“字典”), 200, {'Content-Type': 'application/json'}

    5.自定义正则路由转换器

      1)导入包

    from werkzeug.routing import BaseConverter

      2)仿照BaseConverter自定义一个类

    class RegexConverter(BaseConverter):
        def __init__(self,url_map,*args):
            super(RegexConverter,self).__init__(url_map)
            self.regex = args[0]

      3)将自定义的类添加到路由转换器的字典中

    app.url_map.converters["re"] = RegexConverter  # 这句话相当于将自己定义的类用re来表示

      4)将正则路由转换器应用到实例中

    @app.route('/<re(r"d{2}"):str>')  # 只能匹配两位数字  re(“正则”) ===>  相当于执行了RegexConverter中的init方法,将正则赋值给self.regex
    def print_str(str):
        return str
  • 相关阅读:
    mysql报错解决
    数据存储
    记录python接口自动化测试--把操作excel文件的方法封装起来(第五目)
    基础补充:使用xlrd模块读取excel文件
    记录python接口自动化测试--利用unittest生成测试报告(第四目)
    记录python接口自动化测试--pycharm执行测试用例时需要使用的姿势(解决if __name__ == "__main__":里面的程序不生效的问题)(第三目)
    记录python接口自动化测试--unittest框架基本应用(第二目)
    记录python接口自动化测试--requests使用和基本方法封装(第一目)
    连接数据后,当执行查询语句报错:ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
    通过运行一个tomcat容器来记录下初学docker常用的几个命令---容器篇
  • 原文地址:https://www.cnblogs.com/RomanticLife/p/8362022.html
Copyright © 2011-2022 走看看