This is how I started my first virtualenv for my Flask app:
$ virtualenv flask_env
$ source flask_env/bin/activate
(flask_env) $ pip install Flask
Run Code Online (Sandbox Code Playgroud)
This is my first time working with this. Is it a good practice to create a new virtualenv each time I start building a new Flask app?
我有Flask应用程序,看起来像这样:
from flask import Flask
app = Flask(__name__)
from pymongo import MongoClient
def get_db():
c = MongoClient()
return c.mydb
@app.route("/")
def hello():
db = get_db()
db.foo.find_one(...)
...
if __name__ == "__main__":
app.run()
Run Code Online (Sandbox Code Playgroud)
似乎它工作正常.但我不确定一件事.我在每个视图调用中创建一个MongoClient实例(以及与db的连接).但我应该关闭连接吗?
也许我应该在每个视图调用后关闭连接,如下所示:
@app.before_request
def before_request():
g.db = get_db()
@app.teardown_request
def teardown_request(exception):
g.db.close()
Run Code Online (Sandbox Code Playgroud)
你怎么处理这个东西?
我有一个 RadioField 表单项,它使用数据库中的字段值。
如果没有创建数据库,我将无法启动 Flask Webserver,即使它应该只在我转到该页面并加载该表单时访问该数据库。
如果我在 Web 服务器运行时更新数据库,我将看不到包含新数据库信息的表单。
直到我重新启动 Flask 网络服务器。
我怎样才能得到它,以便在您访问页面时强制表单从数据库中重新加载其值。
此外,我很确定它将 RadioField 的值存储在内存中,因为我可以删除数据库并且 Flask Webserver 将继续运行并且 RadioField 仍将显示。
我正在使用 sqlite3 数据库并使用 APSW(另一个 python sqlite3 包装器)读取和写入它
这是我的表格
class DatabaseForm(Form):
listOfRows = db.getDatabase()
rows = [(str(x[0]), x) for x in listOfRows]
images = RadioField('images', validators = [Required()], choices = rows)
Run Code Online (Sandbox Code Playgroud)
这是我的观点
@app.route('/database', methods = ['GET', 'POST'])
def database():
''' displays the database and allows the user to select an entry '''
form = DatabaseForm()
if form.validate_on_submit():
primaryKey = form.images.data …Run Code Online (Sandbox Code Playgroud) 我今天早些时候遇到过这个问题.这是我的第一个网络应用程序.
server.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import socket
s = socket.socket()
host = socket.gethostname()
# Reserve a port for your service.
port = 12345
# Bind to the port
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
# Now wait for client connection.
s.listen(1)
conn, addr = s.accept()
try:
while True:
# connection, address
content = conn.recv(1024)
if content in ('status', 'stop', 'start', 'reload', 'restart'):
conn.send('%s received' % content)
else:
conn.send('Invalid command')
except KeyboardInterrupt:
conn.close()
s.shutdown(socket.SHUT_RDWR)
s.close()
Run Code Online (Sandbox Code Playgroud)
client.py
#!/usr/bin/python
# -*- …Run Code Online (Sandbox Code Playgroud) 我是Python新手并探索Flask框架.
我正在使用Flask Restful开发一个简单的基于Rest的API.现在我发现的最大挑战是将SQL Alchemy Model类用于JSON.今天我遇到了看似提供这个的Flask-Restless.那么我应该选择什么呢.我设法转换Flask Restful以通过在我的模型类中使用to_dict函数来提供JSON输出
class JSONSERIALIZER(object):
def to_dict(self):
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
Run Code Online (Sandbox Code Playgroud)
亲切的问候
我只是在学习烧瓶.我试图通过jQuery调用获取一个JSON对象到flask.我的HTML看起来像这样,
<html>
<head>
<title>Passenger</title>
<style type="text/css"></style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<div>
<form onsubmit="return false">
<input class="name" type="text" placeholder="Name">
<input class="submit" type="submit" placeholder="Go">
</form>
</div>
<script>
$("input.submit").click(function(e){
$.post( "/save", {name: $("input.name").val(), time: "2pm"});
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Flask app文件看起来像,
from flask import Flask
from flask import redirect, url_for, jsonify
from flask import request
import json
app = Flask(__name__)
@app.route('/')
def home():
return redirect(url_for('static',filename='index.html'))
@app.route('/save', methods=['PUT','POST'])
def get_name():
print request.json
return request.json
if __name__=='__main__':
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
运行此代码将返回None.我期望得到JSON对象[{name:$("input.name").val(),time:"2pm"}].谢谢.
raven test http://483c3952b67247de91cb039622da7966:93a97682c316413db8092d597b3ef1a5@182.92.11.6:9000/2
Using DSN configuration:
http://483c3952b67247de91cb039622da7966:93a97682c316413db8092d597b3ef1a5@182.92.11.6:9000/2
Client configuration:
servers : ['http://182.92.11.6:9000/api/2/store/']
project : 2
public_key : 483c3952b67247de91cb039622da7966
secret_key : 93a97682c316413db8092d597b3ef1a5
Sending a test message...
success!
Event ID was 'bc73d1e11ee34137b50656bffa1a0e0f'
Run Code Online (Sandbox Code Playgroud)
乌鸦测试成功
但事件并没有显示在哨兵.
我正在尝试创建一个Flask Web应用程序,您必须要求整个非本地网站,我想知道是否可以将其缓存以加快速度,因为网站不会经常更改但我仍然希望它每天更新缓存一次.
无论如何,我查了一下,找到了Flask-Cache,它似乎做了我想要的,所以我对它进行了适当的修改,并提出了添加:
from flask.ext.cache import Cache
[...]
cache = Cache()
[...]
cache.init_app(app)
[...]
@cache.cached(timeout=86400, key_prefix='content')
def get_content():
return lxml.html.fromstring(urllib2.urlopen('http://WEBSITE.com').read())
Run Code Online (Sandbox Code Playgroud)
然后我从需要内容的函数中调用,如下所示:
content = get_content()
Run Code Online (Sandbox Code Playgroud)
现在我希望每次调用时都重用缓存的lxml.html对象,但这不是我所看到的.每次进行呼叫时对象的ID都会改变,并且根本没有加速.那么我误解了Flask-Cache的功能,或者我在这里做错了什么?我尝试过使用memoize装饰器,我已经尝试过减少超时或者将它们全部一起删除,但似乎没有任何改变.
谢谢.
我有一个超过1000行的文件,其格式为随机数.
1, 4,0,0
56, 710, 65, 3340,
...
...
Run Code Online (Sandbox Code Playgroud)
我想通过插入这些数字来改变这种格式digit[number].
digit[1], digit[4], digit[0], digit[0]
digit[56], digit[710], digit[65], digit[3340].
Run Code Online (Sandbox Code Playgroud)
我怎么能在Vim做到这一点.
请建议.
我正在使用WTForms制作表格.目前,我有这个:
class UploadForm(flask_wtf.Form):
fichier = wtforms.fields.FileField(u'Fichier')
description = wtforms.fields.TextAreaField(u'Description')
year = wtforms.fields.SelectField(u'Année', choices=[('1A','1A'),('2A','2A')])
subject = wtforms.fields.SelectField(u'Matière', choices=app.config['SUBJECTS'])
submit = wtforms.fields.SubmitField(u'Envoyer')
Run Code Online (Sandbox Code Playgroud)
使用SUBJECTS = [('Sub1','Sub1'), ('Sub2','Sub2')]和此模板:
{% block content %}
<h2>Form</h2>
<form action="{{ url_for('get') }}" method="post"
enctype="multipart/form-data">
{{ form.hidden_tag() }}
{{ form.fichier.label }}
{{ form.fichier }}
{{ form.description.label }}
{{ form.description }}
{{ form.year.label }}
{{ form.year }}
{{ form.subject.label }}
{{ form.subject }}
{{ form.submit }}
</form>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
但是这些年来的主题并不相同,所以我想让主题领域的列表动态化,以便仅提出与所选年份相对应的主题.知道我怎么能这样做吗?
python ×9
flask ×7
caching ×1
json ×1
mongodb ×1
networking ×1
python-2.7 ×1
rest ×1
sentry ×1
sockets ×1
vi ×1
vim ×1
virtualenv ×1
wtforms ×1