我希望能够将数据发送到我的Flask应用程序.我试过访问request.data但它是一个空字符串.你如何访问请求数据?
@app.route('/', methods=['GET', 'POST'])
def parse_request():
data = request.data # data is empty
# need posted data here
Run Code Online (Sandbox Code Playgroud)
这个问题的答案促使我在Python Flask中询问获取原始POST主体,而不管接下来是Content-Type标头,这是关于获取原始数据而不是解析数据.
我不确定这是否特定于Flask,但是当我在开发模式(http://localhost:5000)中运行应用程序时,我无法从网络上的其他计算机访问它(带http://[dev-host-ip]:5000).例如,在开发模式下使用Rails,它可以正常工作.我找不到任何关于Flask开发服务器配置的文档.知道应该配置什么来启用它吗?
环境:
Python 3.10.11
Flask==2.2.2
Run Code Online (Sandbox Code Playgroud)
我在 docker 容器中使用 BASE Image 运行 Flask 后端代码:
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime
但是当我使用 version 运行 pytest 时pytest 7.4.2,
pip install pytest
pytest
Run Code Online (Sandbox Code Playgroud)
它引发了一个错误,日志如下:
==================================== ERRORS ====================================
_____________ ERROR collecting tests/test_fiftyone_utils_utils.py ______________
ImportError while importing test module '/builds/kw/data-auto-analysis-toolkit-backend/tests/test_fiftyone_utils_utils.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/opt/conda/lib/python3.10/importlib/__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
tests/test_fiftyone_utils_utils.py:2: in <module>
import daat # noqa: F401
/opt/conda/lib/python3.10/site-packages/daat-1.0.0-py3.10.egg/daat/__init__.py:1: in <module>
from daat.app import app
/opt/conda/lib/python3.10/site-packages/daat-1.0.0-py3.10.egg/daat/app/__init__.py:6: in <module>
from flask import …Run Code Online (Sandbox Code Playgroud) 以前,我问过如何获取Flask请求中收到的数据,因为它request.data是空的.答案解释request.data为原始帖子正文,但如果解析表单数据则为空.如何无条件地获得原始邮政体?
@app.route('/', methods=['POST'])
def parse_request():
data = request.data # empty in some cases
# always need raw data here, not parsed form data
Run Code Online (Sandbox Code Playgroud) 与Flask捆绑在一起的服务器是否可以安全地在生产环境中进行部署?如果没有,我应该使用什么来在生产中部署Flask?
我知道在php中我可以$_GET['key1']['key2']用来检索以数组形式发送的GET数据但是在Python中我可能会收到一个字符串并且它不被识别为数组/列表.
如果重要的话,我会使用flask/werkzeug.
从官方文件说:
Werkzeug是一个用于Python的WSGI实用程序库.
但是,当我运行我的Flask Web应用程序时,我注意到在服务器的响应头中,显示了
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 13
Server: Werkzeug/0.11.9 Python/2.7.10
Date: Tue, 03 May 2016 12:50:08 GMT
Run Code Online (Sandbox Code Playgroud)
在第四行它说服务器是Werkzeug.
为什么这不是Werkzeug一个像Web服务器那样的意思Apache?
我url_for用户在用户注销时生成重定向网址.
url_for
但是,当我将页面更改为https连接时,url_for仍然会给我http.
我想明确要求在网址的开头url_for添加https.
你能指点我怎么改变它吗?我看看Flask的文档,没有运气.
谢谢.
在另一个系统上运行 Flask 项目后,我收到以下消息。该应用程序一直运行没有问题:
Error: While importing 'app', an ImportError was raised:
Traceback (most recent call last):
File "c:\users\User\appdata\local\programs\python\python39\lib\site-packages\flask\cli.py", line 214, in locate_app
__import__(module_name)
File "C:\Users\User\Desktop\Projekt\app\__init__.py", line 3, in <module>
from flask_restx import Namespace, Api
File "c:\users\User\appdata\local\programs\python\python39\lib\site-packages\flask_restx\__init__.py", line 5, in <module>
File "c:\users\User\appdata\local\programs\python\python39\lib\site-packages\flask_restx\api.py", line 50, in <module>
from .swagger import Swagger
File "c:\users\User\appdata\local\programs\python\python39\lib\site-packages\flask_restx\swagger.py", line 18, in <module>
from werkzeug.routing import parse_rule
ImportError: cannot import name 'parse_rule' from 'werkzeug.routing' (c:\users\User\appdata\local\programs\python\python39\lib\site-packages\werkzeug\routing\__i
nit__.py)
Run Code Online (Sandbox Code Playgroud)
我的要求.txt
Flask~=2.1.2
psycopg2-binary==2.9.3
Flask-SQLAlchemy==2.5.1
flask-restx==0.5.1
qrcode~=7.3.1
PyPDF2==2.6.0
reportlab~=3.6.10
WTForms~=3.0.1
flask-bootstrap==3.3.7.1
flask-wtf==1.0.1
Run Code Online (Sandbox Code Playgroud) flask ×10
werkzeug ×10
python ×9
flask-restx ×1
ip-address ×1
list ×1
pytest ×1
request ×1
server ×1
url-routing ×1
wsgi ×1