我希望能够将数据发送到我的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现在它只是提供一个静态HTML页面,其中包含一些CSS和JS的链接.我无法在文档Flask中找到返回静态文件的位置.是的,我可以使用,render_template但我知道数据没有模板化.我曾经想过send_file或者url_for是对的,但是我无法让它们发挥作用.与此同时,我正在打开文件,阅读内容,并Response使用适当的mimetype来装配:
import os.path
from flask import Flask, Response
app = Flask(__name__)
app.config.from_object(__name__)
def root_dir(): # pragma: no cover
return os.path.abspath(os.path.dirname(__file__))
def get_file(filename): # pragma: no cover
try:
src = os.path.join(root_dir(), filename)
# Figure out how flask returns static files
# Tried:
# - render_template
# - send_file
# This should not be so non-obvious
return open(src).read()
except IOError as exc:
return str(exc)
@app.route('/', methods=['GET'])
def metrics(): # pragma: …Run Code Online (Sandbox Code Playgroud) 我有一个功能,用Pandas分析CSV文件,并生成一个包含摘要信息的dict.我想将结果作为Flask视图的响应返回.如何返回JSON响应?
@app.route("/summary")
def summary():
d = make_summary()
# send it back as json
Run Code Online (Sandbox Code Playgroud) 我不确定这是否特定于Flask,但是当我在开发模式(http://localhost:5000)中运行应用程序时,我无法从网络上的其他计算机访问它(带http://[dev-host-ip]:5000).例如,在开发模式下使用Rails,它可以正常工作.我找不到任何关于Flask开发服务器配置的文档.知道应该配置什么来启用它吗?
关于如何获取查询字符串的烧瓶文档并不明显.我是新人,看着文档,找不到!
所以
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
Run Code Online (Sandbox Code Playgroud) 在Flask中,如何从URL中提取参数?如何使用flask和python从URL中提取命名参数?
当用户访问我在烧瓶应用程序上运行的URL时,我希望Web服务能够处理问号后指定的参数:
http://10.1.1.1:5000/login?username=alex&password=pw1
#I just want to be able to manipulate the parameters
@app.route('/login', methods=['GET', 'POST'])
def login():
username = request.form['username']
print(username)
password = request.form['password']
print(password)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Flask构建一个简单的API,我现在想要阅读一些POSTed JSON.我使用PostMan Chrome扩展程序发布帖子,而JSON我的帖子很简单{"text":"lalala"}.我尝试使用以下方法读取JSON:
@app.route('/api/add_message/<uuid>', methods=['GET', 'POST'])
def add_message(uuid):
content = request.json
print content
return uuid
Run Code Online (Sandbox Code Playgroud)
在浏览器上它正确地返回我放入GET的uuid,但是在控制台上,它只是打印出来None(我希望它打印出来{"text":"lalala"}.有人知道我如何从Flask方法中获取发布的JSON吗?
我有一个REST端点作为
class LoginResource(restful.Resource):
def get(self):
print(session)
if 'USER_TOKEN' in session:
return 'OK'
return 'not authorized', 401
Run Code Online (Sandbox Code Playgroud)
当我尝试访问时
curl -v -b ~/Downloads/cookies.txt -c ~/Downloads/cookies.txt http://127.0.0.1:5000/
* About to connect() to 127.0.0.1 port 5000 (#0)
* Trying 127.0.0.1...
* connected
* Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.27.0
> Host: 127.0.0.1:5000
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 401 UNAUTHORIZED
< Content-Type: …Run Code Online (Sandbox Code Playgroud) 我不确定我是否理解该flask.jsonify方法的目的.我尝试从这里创建一个JSON字符串:
data = {"id": str(album.id), "title": album.title}
Run Code Online (Sandbox Code Playgroud)
但我得到的东西与我所得到的json.dumps不同flask.jsonify.
json.dumps(data): [{"id": "4ea856fd6506ae0db42702dd", "title": "Business"}]
flask.jsonify(data): {"id":…, "title":…}
Run Code Online (Sandbox Code Playgroud)
显然我需要得到一个看起来更像json.dumps返回的结果.我究竟做错了什么?
我对这整个MV*客户端框架狂热都很陌生.它不一定是AngularJS,但我之所以选择它,是因为它比Knockout,Ember或Backbone更自然.无论如何,工作流程是什么样的?人们是否开始在AngularJS中开发客户端应用程序,然后将后端连接到它?
或者反过来首先在Django,Flask,Rails中构建后端,然后将AngularJS应用程序附加到它上面?是否有"正确"的方式,或者它最终只是个人偏好?
我也不确定是否根据Flask或AngularJS构建我的项目?社区实践.
例如,Flask的minitwit应用程序的结构如下:
minitwit
|-- minitwit.py
|-- static
|-- css, js, images, etc...
`-- templates
|-- html files and base layout
Run Code Online (Sandbox Code Playgroud)
AngularJS教程应用程序的结构如下:
angular-phonecat
|-- app
`-- css
`-- img
`-- js
`-- lib
`-- partials
`-- index.html
|-- scripts
`-- node.js server and test server files
Run Code Online (Sandbox Code Playgroud)
我可以自己想象一个Flask应用程序,并且很容易看到AngularJS应用程序就像ToDo List一样,但是当涉及到使用这两种技术时,我不明白它们是如何协同工作的.当你已经拥有AngularJS时,我几乎不需要服务器端的Web框架,一个简单的Python Web服务器就足够了.例如,在AngularJS待办事项应用程序中,他们使用MongoLab使用Restful API与数据库通信.后端不需要Web框架.
也许我只是非常困惑,而AngularJS只不过是一个花哨的jQuery库,所以我应该像我在Flask项目中使用jQuery一样(假设我将AngularJS模板语法更改为与Jinja2不冲突的东西).我希望我的问题有道理.我主要在后端工作,这个客户端框架对我来说是一个未知的领域.
flask ×10
python ×9
json ×3
werkzeug ×2
angularjs ×1
curl ×1
javascript ×1
post ×1
query-string ×1
rest ×1
session ×1
static-files ×1
web-services ×1