小编Pac*_*aco的帖子

如何调用@ app.before_request

我有一个简单的烧瓶应用程序,我想使用@ app.before_request,但不知何故它不起作用!我确信我没有正确思考这个问题!显然它将被要求使用类似的东西:

return redirect(url_for('index'))
Run Code Online (Sandbox Code Playgroud)

但我需要它被要求:

return render_template('index.html')
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙吗?

python redirect jinja2 flask

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

Flask-WTF使用input = submit而不是button type = submit

我想要使​​用Flask的"SubmitField"

<button type="submit" title="Save this form"><span>Save</span></button>
Run Code Online (Sandbox Code Playgroud)

代替:

<input type="submit" title="Save this form" />
Run Code Online (Sandbox Code Playgroud)

我在模板中打印出来:

{{ field(class=css_class, title=field.description, **kwargs) }}
Run Code Online (Sandbox Code Playgroud)

我猜我必须以某种方式修改SubmitInput(SubmitField背后的小部件),但我不确定如何做到这一点,我是否必须修改__html __()?

编辑:

from flask.ext.wtf import Required, Length, EqualTo, Field, TextInput
from flask import Markup
class InlineButtonWidget(object):
    html = """
    <button type="submit" title="%s"><span>%s</span></button>
    """

    def __init__(self, input_type='submit'):
        self.input_type = input_type

    def __call__(self, field, **kwargs):
        kwargs.setdefault('id', field.id)
        kwargs.setdefault('type', self.input_type)
        if 'value' not in kwargs:
            kwargs['value'] = field._value()
        return HTMLString(self.html % (field.name, field.label ))


class InlineButton(Field):
  widget = InlineButtonWidget()
  def _value(self):
    if self.data: …
Run Code Online (Sandbox Code Playgroud)

python flask wtforms flask-wtforms

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

Flask SQLAlchemy 设置动态 URI

我有一个在 WSGI 下提供的 Flask 应用程序,其中数据库 URI 会随时间变化。URI 每两小时切换到另一个数据库。我利用这段时间填充一个数据库,而另一个数据库则为应用程序提供数据。

我很难弄清楚如何最好地配置会话,以便在切换发生时,客户端将在下一个请求中获得正确的(不同的)数据库。根据我的测试,如果我在顶层初始化数据库,当切换发生时,客户端仍然指向旧数据库。

我想过在页面(索引等)内部设置会话,但是太痛苦了,然后我担心打开和关闭太多的数据库连接并让它们闲置。我想我可以通过在启动时初始化两个会话来使其工作,然后只需选择在每个页面内的切换时使用哪个会话。这似乎效率低下,我相信有更好的方法。

帮助?!

~~~~~~~~~

这是我目前正在做的事情的一般想法,但无法更改请求之间的 URI。顶级代码只运行一次,或者每隔一段时间运行一次。

if now.hour % 2:
    db_name = 'db1'
else:
    db_name = 'db2'

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://foo:poo@localhost:3306/%s" % db_name

def init_db(uri, **kwargs):
    engine = create_engine(uri, **kwargs)

    Base.metadata.create_all(bind=engine)

    global db_session
    db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
    Base.query = db_session.query_property()


init_db(app.config['SQLALCHEMY_DATABASE_URI'], pool_recycle=3600)

@app.teardown_request
def shutdown_session(exception=None):
    db_session.remove()

@app.route('/')
def index():
    ...etc...
Run Code Online (Sandbox Code Playgroud)

工作示例 - 美丽。

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://foo:poo@localhost:3306/%s"

class SessionManager(object):
    def __init__(self, base_uri=None, **kwargs):
        self.session = None
        self.base_uri …
Run Code Online (Sandbox Code Playgroud)

python uri sqlalchemy flask

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

为 Python 3 安装 ipdb?

我使用安装了ipdbpip,但我仍然得到

ImportError: No module named ipdb.

我是否必须做其他事情才能引入这个模块?当然,我import ipdb也在我的文件的顶部。我的想法是:我安装了 Python 2.7 和 Python 3。Pip 安装ipdb到 Python 2.7 目录,但我正在运行的 Python 模块使用的是 Python 3。我认为这是问题所在,但我该如何解决它,以便ipdb可以与我的 Python 3 模块一起使用?谢谢!

python python-2.7 python-3.x ipdb

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

Url 前缀和 Flask-Babel

我使用 Flask-Babel 进行翻译。使用函数来确定语言环境:

LANGUAGES = ['en', 'ru']

@babel.localeselector
def get_locale():
    return request.accept_languages.best_match(LANGUAGES)
Run Code Online (Sandbox Code Playgroud)

例如,如何根据语言环境为每个人的 url 添加 url-prefix?

ru/quotes
Run Code Online (Sandbox Code Playgroud)

或者

en/quotes
Run Code Online (Sandbox Code Playgroud)

我想设置链接以在模板中选择语言。我怎样才能做到这一点?

python flask

5
推荐指数
0
解决办法
761
查看次数

flask g.user和before_request

我有一个简单的设置,使用如下所示的flask-login.当我点击before_request时,g.user设置正确.我也正确注册用户(因为他们使用正确的电子邮件/通行证打到数据库).我的问题是在before_request和页面命中之间,g.user总是变为None.我想我会错过会话,但我不知道是什么.

init:

lm = LoginManager()
lm.init_app(app)
lm.login_view = 'login'
Run Code Online (Sandbox Code Playgroud)

在view/login.py文件中,我有以下内容.

意见/ login.py:

@app.lm.user_loader
def load_user(id):
    return models.user.user_with_id(id)

@app.before_request
def before_request():
    g.user = current_user
    print 'current_user: %s, g.user: %s, leaving bef_req' % (current_user, g.user)

@app.route('/login', methods=['GET', 'POST'])
def login():
    print 'in login, g.user: %s' % g.user
    if g.user is not None and g.user.is_authenticated():
        return redirect(url_for('index'))
    enter_form = app.forms.EnterForm()
    if enter_form.validate_on_submit():
        session['remember_me'] = True
        return app.models.user.try_register(enter_form.email.data,
                                            enter_form.password.data)
    return render_template('index.html', enter_form=enter_form, profiles=[])
Run Code Online (Sandbox Code Playgroud)

意见/ index.py:

@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index(): …
Run Code Online (Sandbox Code Playgroud)

python session flask

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

使用python迭代QListView内部的所有项目

我有一个QlistView内部带有项目名称(QstandardItem)的复选框(动态创建)。下面Qlistview是一个名为的复选框DatacheckercheckBox1。我想要的是当此DatacheckercheckBox1复选框状态更改为“已检查”时,QlistView应选中内的所有复选框。我已经DatacheckercheckBox1通过复选框发出了信号

self.dlg.DatacheckercheckBox1.stateChanged.connect(self.selectAll)
Run Code Online (Sandbox Code Playgroud)

我没有写一个方法,应该迭代其中的所有项目,Qlistview并使其旁边的复选框“已检查”(如果尚未检查)的想法。

python pyqt4 qt-designer

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

如何在Django中为模型获取具有反向关系的所有类的集合?

鉴于:

from django.db import models

class Food(models.Model):
     """Food, by name."""
     name = models.CharField(max_length=25)

class Cat(models.Model):
     """A cat eats one type of food"""
     food = models.ForeignKey(Food)

class Cow(models.Model):
     """A cow eats one type of food"""
     food = models.ForeignKey(Food)

class Human(models.Model):
     """A human may eat lots of types of food"""
     food = models.ManyToManyField(Food)
Run Code Online (Sandbox Code Playgroud)

一个人,只给出食物类,如何获得一组与"反向关系"的所有类.即给出食物类,如何获得,人类课程.

我认为这是可能的,因为Food有三个"反向关系":Food.cat_set,Food.cow_setFood.human_set.

帮助谢谢,谢谢!

python django django-models django-orm

4
推荐指数
2
解决办法
2549
查看次数

Djangocms中的自定义视图?

我还没有找到一个令人满意的方法:我有一个工作正常的djangocms设置.但我需要将CMS外部表格中的内容添加到我的主页,并在模板上呈现该内容.我可以这样做,但在CMS中编辑urls.py以使用我的观点......

url(r'^', 'myapp.views.slideshow_info'),
Run Code Online (Sandbox Code Playgroud)

...从CMS中排除任何内容.我知道我只是获取自定义视图以适应CMS的观点,但我该如何实现?

目前我的应用程序的观点是:

from myapp.models import model1, model2

def slideshow_info(request):
    return render_to_response('index.html', {'slideshow_list' : model1.objects.all()})
Run Code Online (Sandbox Code Playgroud)

非常感谢

python django django-cms

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

带有网络服务器的Flask打破了所有会话?

例如,这段代码:

from flask import session

@app.route('/is_logged_in/')
def is_logged_in():
  return 'user' in session
Run Code Online (Sandbox Code Playgroud)

它运行瓶的开发服务器时运行对我很好,但它抛出一个500错误与任何网络服务器设置(FastCGI的,uWSGI等)的任何服务器(Apache时,Nginx的,lighttpd的)上.

谁知道为什么?


我的实际代码是在GitHub上,如果重要的话.

在使用Flask的内部服务器运行时,它可以完美运行,但是我无法使用任何会话变量来使用生产网络服务器:https://github.com/Blender3D/Webminal/blob/master/server.py

python session lighttpd flask

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