python flask框架不执行if __name__ == '__main__'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python flask框架不执行if __name__ == '__main__'相关的知识,希望对你有一定的参考价值。

我直接执行这个py文件死活不执行if __name__ == '__main__':
print('123')
app.run(host='0.0.0.0:5000')
根本跑不进去..是不是run-->edit config....那个里面的问题..如果是的话要怎么改正求大神指教

参考技术A

可以试试

if '__name__' == '__main__':
    app.run(host='0.0.0.0', port=5000)

参考技术B 哥们,解决这个问题了吗? 参考技术C print加啥括号

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

 

以上是关于python flask框架不执行if __name__ == '__main__'的主要内容,如果未能解决你的问题,请参考以下文章

PythonWeb框架之Flask

python unittest不执行"if __name__ == '__main__' "问题

Flask-SQLAlchemy

python之路_flask框架_flask框架基础

Flask基础使用

Python 同一文件中,有unittest不执行“if __name__ == '__main__”,不生成HTMLTestRunner测试报告的解决方案