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....那个里面的问题..如果是的话要怎么改正求大神指教
可以试试
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__'的主要内容,如果未能解决你的问题,请参考以下文章
python unittest不执行"if __name__ == '__main__' "问题
Python 同一文件中,有unittest不执行“if __name__ == '__main__”,不生成HTMLTestRunner测试报告的解决方案