草庐IT

Flask-Migrate

全部标签

python - flask 框架 : MVC pattern

Flask框架天生就支持MVC模式吗?我应该将应用程序的哪一部分视为模型,将什么视为View以及将什么视为Controller?通常(根据我的经验)Flask应用程序如下所示:main_dir--||app1--||||__init__.py|api.py|models.py|static--||||allthestaticstuff|app.py#withblueprintsregistering 最佳答案 Flask实际上不是一个MVC框架。它是一个极简主义的框架,可以让您在如何构建应用程序方面有很大的自由度,但是MVC模式非常

python - Flask加载本地json

我正在为如何在flask中加载本地json而苦恼。fromflaskimportFlask,render_template,json,url_fordeftaiwan():json_data=open(url_for('static',filename="data/taiwan.json"))data=json.load(json_data)returnrender_template('taiwan.jade',data=data)这会引发IOError:没有这样的文件或目录:'/static/css/taiwan.json'。但它仍然存在。任何建议 最佳答

python - gunricorn + nginx 的 Flask 重定向(url_for)错误

我的flask应用程序中的redirect(url_for)函数有问题。任何redirect(url_for("index"))行都会将应用程序从domain.com/app重定向到ip-addr/app,其中ip-addr是我自己的客户端机器ip,而不是服务器的。这让我很困惑,我不知道问题到底发生在哪里,因为它只发生在服务器上,而不是任何本地测试。详细信息:我正在使用此处找到的反向代理设置http://flask.pocoo.org/snippets/35/.我的nginx配置是这样设置的location/app{proxy_set_headerX-Script-Name/app;p

python - 为什么 Flask 不应该与内置服务器一起部署?

为什么建议使用Apache或Nginx部署Flask应用程序?它有一个内置的服务器,难道不能通过运行pythonapp.py并在防火墙中打开正确的端口来部署它吗? 最佳答案 Werkzeug的WSGI服务器不适用于生产环境。它是作为开发过程中的便利而提供的。它在开发时并没有考虑到安全性或性能(默认情况下它一次只处理一个请求)。使用真正的WSGI应用程序服务器,例如uWSGI或Gunicorn来提高性能,并通过一个真正的Web服务器(例如Nginx)来代理它以提高性能和安全性。Web服务器擅长排队请求/响应,可以同时提供静态内容和其他

python - 如果引发异常,如何使 Flask-SQLAlchemy 自动回滚 session ?

我想设置一个使用Flask-SQLAlchemy构建的应用程序,以便在View引发异常时回滚对数据库所做的所有更改,该异常在View代码之外冒泡(即未在内部捕获)。即使某些对象在子事务中被自动或直接通过session.commit()刷新到数据库,我也希望它能够工作。类似于Django'stransactionrequestwrapping的东西. 最佳答案 你可以这样做:@app.teardown_requestdefteardown_request(exception):ifexception:db.session.rollba

服务层的Python/Flask最佳实践

我对Python有点陌生(我有Java/C++背景)。我一直在使用Flask进行Web开发。我的问题在某种程度上与依赖注入(inject)和线程安全有关。在Java/Spring中,您将拥有一个Controller,该Controller具有一个服务,例如UserService注入(inject)其中。当您说出一个addUser端点时,它会调用userService.addUser(someData)。如果我想在Python/Flask中做同样的事情,最好的做法是只拥有一个名为UserService的文件,其中包含addUser()、deleteUser()等函数,然后直接用UserS

python - 在 Flask 中重置 cookie 的过期时间

我正在使用Python网络框架Flask。我在我的应用程序中使用session。对于名为main的应用,我设置了main.permanent_session_lifetime=timedelta(days=5),这样用户在登录后将保持登录状态5天in。但即使是活跃用户也会在5天后注销。我希望在他们每次访问网站时重置过期时间,这样您只有在不活动5天后才会注销。大多数网站都是这样工作的。我如何使用Flask做到这一点? 最佳答案 您可以使用@before_request处理程序在每次请求时为客户端更新session。尝试以下操作:@ap

python - 我可以在 Python/Flask 中使用外部方法作为路由装饰器吗?

我的主应用程序文件目前是一系列方法定义,每个都附加到一个路由。我的应用程序有3个不同的部分(主要、管理、api)。我试图将方法拆分到外部文件中以便更好地维护,但我喜欢Flask在为我的应用程序的URL使用路由装饰器方面的简单性。我的一条路线目前看起来像这样:#index.py@application.route('/api/galleries')defget_galleries():galleries={"galleries":#getgalleryobjectshere}returnjson.dumps(galleries)但我想将get_galleries方法提取到包含我的API方

python - 如何从一个 Flask View 调用另一个 View ?

我在一个蓝图模块中有一个JSONAPI,在另一个蓝图模块中有一个Web前端。我想通过在前端View模板中嵌入它需要的一些JSON来减少客户端JS代码必须发出的一些AJAX请求,然后再将其发送给客户端,likeinthisgistIfound.如何从另一个FlaskView调用一个FlaskView?我可以直接调用View函数,但是request会对应于“外部”请求,这会混淆被调用的API函数。我试过了usingtest_request_context它几乎可以工作,但我不知道如何保持身份验证(我正在使用Flask-Login)。 最佳答案

python - flask 单元测试 : how to test request from logged in user

我正在为我的Flask网络应用程序编写一些单元测试,我正在尝试测试匿名用户和登录用户发出的请求之间的响应差异。我正在使用Flask-Login扩展来实现用户登录/注销。显然我能够执行匿名请求,但我如何模拟来自已登录用户的请求?我认为在header中发送sessioncookie就足够了,但它不起作用。headers=Headers({'Cookie':['WEBSITE_ID=%s;Domain=adsabs.harvard.edu;expires=Thu,25-Apr-221316:53:22GMT;Path=/'%cookie_value,'WEBSITE_ID=%s;Domain