小编Pac*_*aco的帖子

Flask静态文件Cache-Control

我正在尝试在开发过程中为我的JS文件设置合理的缓存过期.我有标准设置,HTML,CSS和JS都在static目录下.

文档也提到这一点,但我的生活,我不能得到这个工作.我先尝试过隐含的两种方法

class MyFlask(flask.Flask):
    def get_send_file_max_age(self, name):
        if name.lower().endswith('.js'):
            return 60
        return flask.Flask.get_send_file_max_age(self, name)

app = MyFlask(__name__)
Run Code Online (Sandbox Code Playgroud)

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 60
Run Code Online (Sandbox Code Playgroud)

两者都没有效果,我在/ static下的JS文件仍然会返回默认的缓存超时,

Cache-Control: public, max-age=43200
Run Code Online (Sandbox Code Playgroud)

任何指针赞赏.

python cache-control static-files flask

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

通过nosetests测试烧瓶应用时获取IP地址

我的应用程序依赖于request.remote_addr这是None当我运行通过使用nosetests测试app.test_client().post('/users/login', ....).

当我运行测试时,如何模拟IP(127.0.0.1正常工作)? 我已经尝试设置环境变量,使用post()方法发送头文件,我已经通过nosetests,werkzeugs和flaskks文档进行了挖掘,但我尝试过的任何工作都没有.

python testing werkzeug nosetests flask

18
推荐指数
2
解决办法
3420
查看次数

多语言烧瓶应用

有没有一种让Flask应用程序多语言的首选方法?理想情况下,该解决方案将允许@app.route相同的视图为每种语言使用不同的URL,例如@app.route(en='/staff/', fr='/equipe/).我非常有信心我可以一起破解这样的东西,但现有的图书馆肯定会节省我一些时间.谢谢.

python multilingual localization internationalization flask

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

如何在django中使用Context时禁用HTML编码

在我的django应用程序中,我使用模板构建电子邮件正文,其中一个参数是url,注意在url中有两个由&符号分隔的参数.

t = loader.get_template("sometemplate")
c = Context({
   'foo': 'bar',
   'url': 'http://127.0.0.1/test?a=1&b=2',
})
print t.render(c)
Run Code Online (Sandbox Code Playgroud)

渲染后产生: http://127.0.0.1/test?a=1&b=2

请注意,&符是HTML编码为"&".解决这个问题的一种方法是将每个参数分别传递给我的模板并在模板中构建url,但是我想避免这样做.

有没有办法禁用上下文参数的HTML编码或至少避免编码&符号?

python django django-templates

16
推荐指数
2
解决办法
6409
查看次数

Nginx配置为根目录中的静态站点,子目录中的Flask应用程序

我想在我的root public_html目录中有一个静态站点,然后在他们自己的子目录中有Flask应用程序(例如public_html/foo).静态根目录按预期运行.

我花了几个小时编辑nginx配置以使Flask应用程序正常工作,但总是回到同一个地方,即当我迁移到mysite/foo时,以下代码总是返回'Bad Config'.我希望它能回归'Hello World!'

如果我更改nginx配置以使服务器根位于public_html/foo中,Flask应用程序将按预期工作(即mysite.com返回'Hello World!').在以下配置中,当我认为它应该指向mysite.com/foo时,Flask索引仍然指向mysite.com

在/ etc/nginx的/启用的站点 - /mysite的

upstream frontends {
# gunicorn
server 127.0.0.1:18000;
}

server {
listen 80;
server_name www.mysite.com;
rewrite ^/(.*) http://mysite.com$1 permanent;
}

server {
listen 80;
server_name mysite.com;
server_name_in_redirect off;
root /home/ubuntu/public_html/mysite;

access_log /home/ubuntu/logs/mysite/access.log;
error_log /home/ubuntu/logs/mysite/error.log;

location / {
    index index.html;
    }
location /foo {
    try_files $uri @foo;
    }
location @foo {
        proxy_pass http://frontends;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

/home/ubuntu/public_html/mysite/foo/foo.py

from flask import Flask
from flask import render_template
app = Flask(__name__)

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

python nginx flask gunicorn

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

如何使用Flask测试客户端模拟AJAX请求?

测试Flask应用程序完成:

# main.py
from flask import Flask, request

app = flask.Flask(__name__)

@app.route('/')
def index():
    s = 'Hello world!', 'AJAX Request: {0}'.format(request.is_xhr)
    print s
    return s

if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

那么这是我的测试脚本:

# test_script.py
import main
import unittest

class Case(unittest.TestCase):
    def test_index():
        tester = app.test_client()
        rv = tester.get('/')
        assert 'Hello world!' in rv.data

if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

在测试输出中,我会得到:

Hello world! AJAX Request: False
Run Code Online (Sandbox Code Playgroud)

如何使用AJAX请求测试我的应用程序?

python ajax unit-testing flask

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

关闭打开的h5py数据文件

在我们的实验室中,我们hdf5通过python包将数据存储在文件中h5py.

在实验开始时,我们在hdf5文件中的数组数组(以及其他内容)之后创建文件和存储数组.当实验失败或被中断时,文件未正确关闭.因为我们的实验从iPython对数据对象的引用运行在内存中(某处).

有没有办法扫描所有打开的h5py数据对象并关闭它们?

python hdf5 ipython h5py

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

烧瓶教程; 无法导入flaskr(初始化数据库)

我是编程新手,并试图通过烧瓶教程. http://flask.pocoo.org/docs/tutorial/

在尝试运行应用程序时,我坚持这部分(来自github上的自述文件):https: //github.com/mitsuhiko/flask/tree/master/examples/flaskr/

启动python shell并运行:

from flaskr import init_db; init_db()
Run Code Online (Sandbox Code Playgroud)

当我尝试在python shell中运行命令时出现此错误:

Import error: No module named flaskr
Run Code Online (Sandbox Code Playgroud)

当我尝试在本地运行应用程序时出现此错误:

sqlite3.OperationalError
OperationalError: unable to open database file
Run Code Online (Sandbox Code Playgroud)

我一直在寻找几个小时的解决方案,但无济于事.关于我能检查什么的任何想法?谢谢.

python import flask

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

烧瓶接收空表格

我正试图在Flask中为我自己的教育设置一个简单的表格.我有一个带有此表单代码的login.html页面:

<form action="{{ url_for('login') }}" method="post">
    <div>
        <label for="username">Username</label>
        <div>
            <input type="text" id="username" name="username" placeholder="Username">
        </div>
    </div>
    <div>
        <label for="password">Password</label>
        <div>
            <input type="password" id="password" name="password" placeholder="Password">
        </div>
    </div>
    <div >
        <input class="btn" type="submit">
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码来接收它,但Flask返回一个空,request.form所以我无法处理它.

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        request.form['username']
        ...
Run Code Online (Sandbox Code Playgroud)

我现在真的不想学习另一个库(WTForms),而且我正在使用bootstrap,这将增加头痛.我在Flask/HTML中没有看到什么?

html python forms post flask

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

重置Flask中cookie的到期时间

我正在使用Python Web框架Flask.我在我的应用中使用会话.对于我的应用程序调用main,我已经获得了设置main.permanent_session_lifetime = timedelta(days=5),因此用户将在登录后保持登录状态5天.但即使是活跃用户也将在5天后注销.我希望每次访问网站时都会重置过期时间,因此只有在5天不活动后才能注销.大多数网站以这种方式工作 我如何使用Flask做到这一点?

python session flask

12
推荐指数
2
解决办法
8164
查看次数