Flask常见问题以及解决方案

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/miantian180/article/details/79379166
1、发送请求时服务端报如下错误
InternalServerError: 500: Internal ServerError
class TasksAPI(Resource):
    def __init__(self):
        self.reqparse = reqparse.RequestParser()
        self.reqparse.add_argument('ip', type=list, location='json', required=True)
        self.reqparse.add_argument('user', type=str, location='json', required=True)
        self.reqparse.add_argument('password', type=str, location='json', required=False)
        self.reqparse.add_argument('private_key', type=str, location='json', required=False)
        self.reqparse.add_argument('taskname', type=str, location='json', required=True)
        self.reqparse.add_argument('args', type=dict, location='json', required=False)

有些参数设置为 required=True,但发送请求时并没有带此参数。

2.TemplateNotFound: bootstrap/wtf.html? 

 因为在manage.py中没有  bootstrap = Bootstrap(app)

3.数据库文本页面显示换行,可以在后面加上 | safe  

 {{ form.id | safe }}

4.重定向后POST请求数据丢失。

所以程序需要保存相关数据,所以可以将数据储存在用户会话session中,在请求之间“记住”数据。“默认情况下,session保存在客户端cookie中,使用SECRET_KEY(进行序列化的加密?)进行加密签名,如果修改了cookie中的内容,签名失效,session失效。

5.配置MySQL时失败(解决一天的bug)

在Flask-SQLAlchemy中,数据库由URL指定。流行的数据库引擎URL格式如下:
MySQL    SQLite
其实格式也没有问题,底层原理不清楚,猜测应该还是接口问题。mysql配置(ubuntu的话需要安装一些Pymysql,python mysqldb,什么乱七八糟的东西我都下了,当然还是未能按如上格式配置成功,因为还有一个叫flask-mysql的东西!!!!搞得我都不知道哪个起作用了...总的来说就是flask-mysql最重要....不装不能按如上的mysql格式配置

mysql+mysqldb://username:password@hostname/database可以成功的,强迫症表示不试,一定要按原格式来!!

6.通过flask-mail拓展发送邮件。

使用的端口为:25,使用的是smtp.qq.com(需要到qq邮箱中开启相关服务,需要声明的是,开启服务后用拓展发邮箱变成——> qq账号 + 授权码。 ————授权码在开服务后会给出,忘记了可以申请重新给出。
ubuntu下为 sudo vim /etc/profile ,然后将需要导入的变量以: export mail_username=我的qq账号 export mail_password=我的qq授权码, 然后 source /etc/profile即可。需要声明的是以上表达式需要严格遵守,不要发生 export mail_username = 我的qq账号,等号左右有空格的良好编程习惯,不然你会导入了一个寂寞

7.版本问题

flask --app=flaskr initdb
然而 可能并没有卵用,你的cli会告诉你 flask command not found.
由于这个是最新的特性出现在flask最新版本0.11.dev0 所以直接使用pip install flask得到的最新版本是无法运行的 环境变量也是没有被修改的
所以执行这个命令,是没有办法得到想要的效果。issue上面有人给出了解决方案 大致是直接从代码安装最新版本 我尝试了一下 用pip 直接安装最新代码是可以解决这个问题的。


展开阅读全文

没有更多推荐了,返回首页