小编Pac*_*aco的帖子

每次开始构建新的Flask应用程序时,创建一个新的"virtualenv"是一个好习惯吗?

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?

python virtualenv flask

2
推荐指数
1
解决办法
207
查看次数

使用Flask和PyMongo

我有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)

你怎么处理这个东西?

python mongodb flask

2
推荐指数
1
解决办法
1433
查看次数

Flask WTF 表单未随 sqlite3 数据库更新

我有一个 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)

python flask python-2.7 flask-sqlalchemy flask-wtforms

2
推荐指数
1
解决办法
893
查看次数

客户端关闭时服务器崩溃

我今天早些时候遇到过这个问题.这是我的第一个网络应用程序.

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 sockets networking client-server

2
推荐指数
1
解决办法
3088
查看次数

Flask-Restfull在Flask-Restless上

我是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)

亲切的问候

python rest json flask

2
推荐指数
1
解决办法
1222
查看次数

在Flask函数中获取JSON数据

我只是在学习烧瓶.我试图通过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"}].谢谢.

python flask

2
推荐指数
1
解决办法
3643
查看次数

哨兵不显示事件

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)

乌鸦测试成功

但事件并没有显示在哨兵.

python sentry

2
推荐指数
1
解决办法
1888
查看次数

使用Flask-Cache缓存lxml.html对象

我正在尝试创建一个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装饰器,我已经尝试过减少超时或者将它们全部一起删除,但似乎没有任何改变.

谢谢.

python caching flask

1
推荐指数
1
解决办法
1015
查看次数

使用Vim宏更改格式

我有一个超过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做到这一点.

请建议.

vi vim

1
推荐指数
1
解决办法
84
查看次数

动态字段取决于WTForms的先前字段

我正在使用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 flask wtforms

1
推荐指数
1
解决办法
2497
查看次数