小编Dep*_*ado的帖子

定期更新并从Flask中呈现值

我想动态显示我的CPU使用情况.我不想重新加载页面以查看新值.我知道如何在Python中获得CPU使用率.现在我用值渲染一个模板.如何使用Flask中的值不断更新页面?

@app.route('/show_cpu')
def show_cpu():
    cpu = getCpuLoad()
    return render_template('show_cpu.html', cpu=cpu)
Run Code Online (Sandbox Code Playgroud)

javascript python jinja2 flask

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

在Python中修改或删除Exif标签'Orientation'

无论软件是否读取exif数据,我都需要以相同的方向显示我的一些图片.一种解决方案(唯一可以实际适合的解决方案)是根据exif标签旋转图像(如果存在),然后删除或修改此标记为"1".

示例
假设图像的Orientation exif标记设置为3.我想要做的是根据此标记旋转此图像并以这种方式保存.因此,不解释exif的软件仍然会以良好的方向显示它.虽然如果exif标签Orientation仍然设置为3,那么解释Exif的软件将旋转我已旋转的图像.这就是为什么我想将此标记设置为1(这意味着:没有方向)或删除它.

我的最终目标是,无论使用哪种软件打开图像,图像始终都会显示相同的图像.

有很多问题,Exif和Python,等等等等等等.这是我听说过的lib列表:

  • Pyexiv2:不合适,我目前正在使用带有Pillow的Python 3.3
  • Gexiv2:看起来有点特定于平台
  • EXIF.py
  • Pexif:看起来像是最近的一个?

什么是最佳做法?有纯粹的python解决方案吗?(我可以用pip安装并把它放在我的requirements.txt中)是否有某种新的lib我可以使用哪种特定于Python3?

我现在唯一的问题是修改并将这些exif数据写入图像文件.我可以读取exif数据,并根据方向标记旋转图像.有关于此的任何提示或建议吗?

python exif python-imaging-library

9
推荐指数
2
解决办法
7834
查看次数

Notify和pynotify有什么区别?

我试图理解Notify(python包装器)和pynotify之间的区别.例如 :

from gi.repository import Notify
Run Code Online (Sandbox Code Playgroud)

import pynotify
Run Code Online (Sandbox Code Playgroud)

创建通知的代码看起来很相似,但似乎我无法使用python3.3导入pynotify.顺便说一下,我找不到使用Notify创建带信号处理程序的按钮的方法.有没有办法可以在Python3.3中导入pynotify或使用Notify创建按钮?
这两个模块有什么区别?
我一直在网上搜索,但似乎我对谷歌u_u不够熟练
,提前谢谢.

python notify pynotify

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

不能在Flask websocket中使用Jsonify

Jsonify似乎不适用于应用程序上下文,是否有解决方法?

我正在用websockets替换一些ajax请求,因为它是性能和网络问题所必需的.我在我的环境中安装了带有pip的Flask-WebSocket.现在我收到一个错误:

RuntimeError: working outside of application context
Run Code Online (Sandbox Code Playgroud)

我申请的骨架如下:

app/
??? forms
??? static
?   ??? css
?   ??? img
?   ?   ??? DefaultIcon
?   ?       ??? eps
?   ?       ??? png
?   ??? js
??? templates
??? ups
??? views
Run Code Online (Sandbox Code Playgroud)

websockets python文件位于views/ajax.py中:

# -*- coding: utf-8 -*-

# OS Imports
import time

# Flask Imports
from flask import jsonify
from .. import sockets
from app.functions import get_cpu_load, get_disk_usage, get_vmem

# Local Imports
from app import app
from app.views.constants import …
Run Code Online (Sandbox Code Playgroud)

python websocket flask python-3.x

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

Chrome不会关闭通知

我目前正在使用此实现来使用基于浏览器的通知:https:
//developer.mozilla.org/en-US/docs/Web/API/Notification

这就像一个魅力.

if ("Notification" in window) {
        if(Notification.permission === "granted") {
            if($('#notify-on-message').is(':checked')) {
                var notification = new Notification(username + ' : ' + data, {'icon': "/custom/favicon.gif"});
            }
            if ($('#notify-on-hl').is(':checked')) {
                var patt = new RegExp("(^|\\W)"+selfusername+"(\\W|$)");
                if(patt.test(data)) {
                    var notification = new Notification(username + ' highlighted you.', {'icon': "/custom/favicon.gif"});
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我遇到的主要问题是,在基于chrome的浏览器上,通知在3秒延迟后才会自动关闭.
它尝试在之后加入var notification = ...

setTimeout(function() {
    notification.close();
}, 2000);
Run Code Online (Sandbox Code Playgroud)

虽然这不会改变一件事.通知仍然存在.
这是一个已知的问题吗?有没有一种简单的方法来解决我不想要的这种行为?

编辑1:根据此页面:
https://developer.mozilla.org/en-US/docs/WebAPI/Using_Web_Notifications
这是一个已知问题:

注意:Firefox和Safari会在片刻之后自动关闭通知,例如4秒.

这也可以使用Notification.close()方法在Web应用程序级别完成,例如使用以下代码:

var n = new Notification("Hi!"); …
Run Code Online (Sandbox Code Playgroud)

javascript firefox notifications google-chrome

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

服务帐户和 PyDrive

我想使用 Google Drive API 使用 cronjob 在其上存储一些备份。我只是不明白如何使用服务帐户使用 PyDrive。当我生成服务帐户文件时,我将它作为我的脚本放在目录中client_secret.json

使用此代码:

#!/usr/bin/env python
# -*- coding: utf8 -*-


from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

def main():

    gauth = GoogleAuth()
    drive = GoogleDrive(gauth)

    f = drive.CreateFile({'parent': 'toto'})
    f.SetContentFile('test.drive.py')
    f.Upload()

if __name__ == '__main__':
    main(sys.argv[1:])
Run Code Online (Sandbox Code Playgroud)

结果

pydrive.settings.InvalidConfigError: Invalid client secrets file Invalid file format.
Run Code Online (Sandbox Code Playgroud)

好吧。然后我查看了关于 SO 的其他帖子,并找到了这两个:
Automate Verification Process
The code from the first answer on this question返回:

Traceback (most recent call last):
  File "test.drive.py", line 4, in <module> …
Run Code Online (Sandbox Code Playgroud)

google-apps google-drive-api pydrive

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

Flask-Login:防止 cookie 重用缺陷

当一位朋友告诉我我的网站上存在安全漏洞时,我正在使用 Flask 开发一个 Web 应用程序。事实上,如果他转储浏览器在登录、注销时拥有的 cookie,然后粘贴回相同的 cookie,就好像他从未注销过一样。事实是,这不是预期的行为。当用户注销时,cookie应该失效并且不能再次使用。

现在我有一个用户模型,存储在数据库中。在这种情况下应该使用什么技术?以前有人遇到过同样的问题吗?更重要的是,如何在我的网站上集成这种安全性,而不必重写每个视图来检查令牌或类似的东西?

这是应用程序初始化。

# App initialization
app = Flask(__name__)
app.config.from_object('config')
app.wsgi_app = ProxyFix(app.wsgi_app)

# Database Setup
db = SQLAlchemy(app)

# Login Manager Setup
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'index'
login_manager.session_protection = 'strong'
Run Code Online (Sandbox Code Playgroud)

这是我目前使用的用户模型。

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True)
    password = db.Column(db.String(54))
    superuser = db.Column(db.Boolean())
    active = db.Column(db.Boolean())
    register_date = db.Column(db.DateTime())
    last_login = db.Column(db.DateTime())
Run Code Online (Sandbox Code Playgroud)

请注意,我删除了与此问题无关的方法和附加字段。

python cookies flask flask-login

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

将 ZipFile 对象存储到 Django 数据库中

我认为我遇到的问题并不常见,因为我似乎无法在这里或在 Google 上找到答案。
我的数据库中存储了几张图片,为了提供这些图片,我想压缩它们,存储在数据库中创建的 ZipFile,该数据库具有 AmazonS3 存储作为后端。更重要的是,所有这些操作都是在 Celery 管理的后台任务中完成的。现在......这是我写的代码:

zipname = "{}.zip".format(reporting.title)

with ZipFile(zipname, 'w') as zf:
    # Here is the zipfile generation. It quite doesn't matter anyway since this works fine.
    reporting = Reporting.objects.get(pk=reporting_id)
    reporting.pictures_archive = zf
    reporting.save()
Run Code Online (Sandbox Code Playgroud)

我收到错误:*** AttributeError: 'ZipFile' object has no attribute '_committed'
所以我尝试以这种方式将 zipfile 转换为 Django 文件:zf = File(zf)但它返回一个空对象。

任何人都可以帮助我吗?我有点卡住了...

python django zip

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