小编cod*_*eek的帖子

导入flask.ext.wtf

我正在使用venv,我开发使用eclipse.我想添加一个联系页面.

我做了:

$ . bin/activate
$ pip install flask-wtf
Run Code Online (Sandbox Code Playgroud)

我在forms.py中导入了一些模块:

我用过这个:

from flask.ext.wtf import Form, TextField, TextAreaField, SubmitField
Run Code Online (Sandbox Code Playgroud)

然后这个:

from flask.ext.wtf import Form
from wtforms.fields import TextField, BooleanField
Run Code Online (Sandbox Code Playgroud)

没有人工作,因为我有这个错误:

from flask.ext.wtf import Form
  File "/usr/local/lib/python2.7/dist-packages/flask/exthook.py", line 87, in load_module
    raise ImportError('No module named %s' % fullname)
ImportError: No module named flask.ext.wtf
Run Code Online (Sandbox Code Playgroud)

python packages flask flask-wtforms python-venv

8
推荐指数
3
解决办法
1万
查看次数

在Flask中改变request.base_url

我在负载平衡后面有一个Flask应用程序,它终止了SSL.我有代码"检测"何时使用SSL并改变请求对象:

@app.before_request
def before_request():
    x_forwarded_proto = request.headers.get('X-Forwarded-Proto')
    if  x_forwarded_proto == 'https':
        request.url = request.url.replace('http://', 'https://')
        request.url_root = request.url_root.replace('http://', 'https://')
        request.host_url = request.host_url.replace('http://', 'https://')
Run Code Online (Sandbox Code Playgroud)

然后我有一个蓝图视图功能:

admin = Blueprint('admin', __name__, url_prefix='/admin')
@admin.route('/login')
def login():
    print request.url
Run Code Online (Sandbox Code Playgroud)

这个函数的输出(当我去/ admin/login时)总是http://而不是https://(尽管它应该在before_request函数中被突变).

关于如何解决这个问题的任何想法?

python ssl request flask

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

Flask-Principal处理PermissionDenied异常的最佳实践

我是写作瓶子的新手,目前flask-principal用作我的授权机制.当用户尝试访问没有所需权限的URL时,flask-principal会引发PermissionDenied异常.

它导致我的系统抛出500 internal server错误.

我怎样才能捕获特定的异常并将用户重定向到警告页面呢?如果您可以共享代码示例,那将非常有用.

python flask flask-principal

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

使用Flask使用自定义域的路由

我的网络应用为用户分配子域,并可选择允许他们使用自定义域.除非用户访问其路径的自定义域而不包含尾部斜杠,否则此方法有效.

对此URL的GET请求按预期工作: http://user.example.com:5000/book/12345/

对此URL的GET请求按预期工作: http://custom.com:5000/book/12345/

GET请求此URL尝试重定向,但失败: http://custom.com:5000/book/12345

Flask最终将浏览器重定向到此URL,当然,这不起作用: http://<invalid>.example.com:5000/book/12345/

我应该采用不同的方式处理自定义域吗?这是重现这一点的完整最小例子.我已经设置了custom.com,example.com.和user.example.com在我的开发环境的/ etc/hosts文件中指向127.0.0.1,以便Flask收到请求.

from flask import Flask

app = Flask(__name__)

server = app.config['SERVER_NAME'] = 'example.com:5000'

@app.route('/', subdomain="<subdomain>")
@app.route('/')
def index(subdomain=None):

    return ("index")

@app.route('/book/<book_id>/', subdomain="<subdomain>")
@app.route('/book/<book_id>/')
def posts(post_id, subdomain=None):

    return (book_id)


if __name__ == '__main__':
    app.run(host='example.com', debug=True)
Run Code Online (Sandbox Code Playgroud)

python subdomain werkzeug flask

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

sqlalchemy对象如何分离?

我的代码结构如下:

project
--app
----utils
------util.py
----__init__.py
----models.py
--tests
----__init__.py
Run Code Online (Sandbox Code Playgroud)

在tests/__ init__.py中,我有一些代码可以通过从app/__ init__.py导入所有应用程序来初始化应用程序(如果重要的话,那就是瓶子)和数据库会话.我可以在tests/__ init__.py中创建模型,查询和访问backrefs的实例.以下表格的代码可以正常工作:

objs = SomeModel.query.all()
for o in objs:
    o.backref
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做:

from utils.util import some_function
objs = SomeModel.query.all()
for o in objs:
    some_function(o)
Run Code Online (Sandbox Code Playgroud)

some_function只是访问backref

def some_function(obj):
    obj.backref
Run Code Online (Sandbox Code Playgroud)

我得到一个错误 DetachedInstanceError: Parent instance <SomeModel at 0x2c1fe10> is not bound to a Session; lazy load operation of attribute 'backref' cannot proceed

阅读sqlalchemy文档表明我需要将对象重新关联到数据库sesssion.我这样做了,看起来它的工作原理(即运行该函数不会因上一个错误而失败):

import db_session
def some_function(obj):
    db_session.add(obj)
    obj.backref
Run Code Online (Sandbox Code Playgroud)

那么当一个物体到底是什么时候分开了?似乎只是将对象传递给另一个模块中的函数将其从会话中分离出来.对象是否不知道与之关联的sqlalchemy会话?我试图避免这样做db_session.add(obj)似乎很多样板代码.

python sqlalchemy flask flask-sqlalchemy

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

Python PIL:转换 RGBA-&gt;P - ValueError:图像模式错误

使用 Python Imaging Library (PIL) 我得到:

"ValueError: image has wrong mode"
Run Code Online (Sandbox Code Playgroud)

when trying to convert an RGBA mode image to a P mode image. I couldn't find any evidence for the fact that it is possible. The material I found on the convert() method doesn't state that it isn't possible. I am wondering if I am doing something wrong or if this is just not possible.

Here is my code:

from PIL import Image

transImage = Image.open("transparent_8_bit.png")
print transImage.mode

transImageRGBA …
Run Code Online (Sandbox Code Playgroud)

python png python-imaging-library

6
推荐指数
0
解决办法
2220
查看次数

Python中全局变量和局部变量的速度

我猜每个人都知道:

Python比全局变量更有效地访问局部变量

好的,这是真的:

oldlist = [str(i) for i in range(500)]
oldlist1 = [i for i in range(500)]

%%timeit
newlist = []
for word in oldlist:
    newlist.append(word.upper())
Run Code Online (Sandbox Code Playgroud)

10000循环,最佳3:每循环178μs

%%timeit
def func():
    newlist = []
    for word in oldlist:
        newlist.append(word.upper())
    return newlist
newlist = func()
Run Code Online (Sandbox Code Playgroud)

10000次循环,最佳3次:每次循环93.2μs

不幸的是,看起来它不是全球规则,而是特例:

%%timeit
newlist = []
for nr in oldlist1:
    newlist.append(nr * nr)
Run Code Online (Sandbox Code Playgroud)

10000个循环,最佳3:每循环60.3μs

%%timeit
def func():
    newlist = []
    for nr in oldlist1:
        newlist.append(nr * nr)
    return newlist
newlist = func()
Run Code Online (Sandbox Code Playgroud)

10000个循环,最佳3:每循环60.5μs

如何解释这些测试?

python optimization global-variables local-variables

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

如何在flask-admin中引用ModelView

获取烧瓶管理员的URL的正确方法是ModelView什么?

这是一个非常简单的例子:

my_admin_view.py

from flask.ext.admin.contrib.sqla import ModelView
from common.flask_app import app
from models import db, User, Role

admin = Admin(app, name="Boost Admin")

admin.add_view(ModelView(User,  db.session, category="model"))
admin.add_view(ModelView(Role,  db.session, category="model"))
Run Code Online (Sandbox Code Playgroud)

my_admin_template.html

...
<p>Check out my user admin link:</p>

<a href="{{ url_for('modelview.user') }}">User view link</a>
{#                   ______________ 
                     what argument to pass in here??      #}
...
Run Code Online (Sandbox Code Playgroud)

传递给url_for(...)谁的正确论据是什么?

我试过modelview.user,my_admin_view.modelview.user等等.似乎没有一个正确解决,我想避免硬编码链接.

谢谢!

python flask flask-admin

6
推荐指数
2
解决办法
5592
查看次数

flask-sqlalchemy列的最大值

假设我有一个用户模型

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)
    numLogins = db.Column(db.Integer)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username
Run Code Online (Sandbox Code Playgroud)

如何查询具有最大登录次数的用户的记录?

python sqlalchemy flask flask-sqlalchemy

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

Python Sql Alchemy - 如何从数据库查询中对类对象结果进行json化

基本上,我只想json编码我的SQL查询的结果.

x = db.session.query(User).filter_by(username = request.form['username'], password = request.form['password']).first()
  print vars(x)
return jsonify(x)

raise TypeError(repr(o) + " is not JSON serializable")

TypeError: < User WashingtonGeorge> is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

这是打印变量的结果(x)

{'_updated': None, 'username': u'WashingtonGeorge', 'password': u'Washington', '_sa_instance_state': <sqlalchemy.orm.state.InstanceState object at 0x7fd12a50c8d0>, 'firstname': u'George', 'lastname': u'Washington', '_created': None, 'fullname': u'George Washington', '_id': 1, 'email': u'WashingtonGeorge@yahoo.com'}
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask eve

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