我运行node myserver.js
包含以下代码的代码,40-50 秒后出现错误(代码下方)。为什么我在没有发生任何事情的情况下会收到错误消息?
var options = {
host: 'google.com',
port: '80',
path: '/',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': 'post_data.length'
}
};
var subscribeRequest = require('http').request(options, function(res) {
console.log('send request');
}).on('error', function(err){console.log(err.stack)});
Run Code Online (Sandbox Code Playgroud)
40-50秒后我收到此错误:
Error: connect ETIMEDOUT
at errnoException (net.js:904:11)
at Object.afterConnect [as oncomplete] (net.js:895:19)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Flask创建一个简单的API.我现在想要返回一个dicts列表如下:
print results # prints out [{'date': '2014-09-25 19:00:00', 'title': u'Some Title'}]
response = make_response(jsonify(results))
response.headers['Content-Type'] = 'application/json'
return response
Run Code Online (Sandbox Code Playgroud)
但是当我在浏览器中访问网址时,我得到以下信息:
{
"date": "title"
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我在这里做错了什么?欢迎所有提示!
我正在使用(很棒的)Flask 框架和WTForms 插件构建一个网站。我现在想在输入字段的焦点上使用显示Bootstrap 工具提示(在此处工作),但为此我必须为输入标签提供data-toggle
andtitle
属性,如下所示:
<input data-toggle="tooltip" title="tooltip on focus!" type="text" placeholder="Focus me!" name="thename"/>
Run Code Online (Sandbox Code Playgroud)
所以我只是将它们添加到表达式中:
{{ form.plotting_value(title='tooltip on focus!', data-toggle='tooltip', class='form-control') }}
Run Code Online (Sandbox Code Playgroud)
该title
属性是没有问题的,但data-toggle
导致
TemplateSyntaxError:函数调用表达式的语法无效
有谁知道我如何data-toggle
使用 WTForms添加到输入字段?
我的菜单使用基本的 Twitter Bootstrap 导航栏,现在我想在受 Stackoverflow 系统启发的下拉菜单中显示通知。为了实现这一点,我想在单击下拉菜单时调用 api,为此我需要“捕获”下拉事件。根据文档,我需要像这样捕获事件:
\n\n$(\'#myDropdown\').on(\'show.bs.dropdown\', function () {\n // do something\xe2\x80\xa6\n})\n
Run Code Online (Sandbox Code Playgroud)\n\n所以我在这里有一个工作小提琴,但是当我在自己的 html 中使用完全相同的代码(见下文)时,它不再工作了。有谁知道下面的代码有什么问题:
\n\n<!DOCTYPE html>\n<html lang="en">\n<head> \n <meta charset="utf-8">\n <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">\n\n <!-- jQuery -->\n <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>\n\n <!-- Bootstrap -->\n <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">\n <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>\n\n <script type="text/javascript">\n $(\'#jajaja\').on(\'show.bs.dropdown\', function () {\n alert(\'Come on lets show the dropdown!!\');\n });\n </script>\n</head>\n<body>\n<div class="container">\n <div class="row">\n <div class="navbar navbar-default" role="navigation">\n <div class="container-fluid">\n <div class="navbar-header">\n <a class="navbar-brand" href="/">My Website</a>\n </div>\n <div id="navbar" …
Run Code Online (Sandbox Code Playgroud) 我正在使用Python Flask框架来构建一个网站.由于我在MongoDB中存储上传的图像,我构建了一个简单的端点来通过id提供图像:
@app.route('/doc/<docId>')
def getDoc(docId):
userDoc = UserDocument.objects(id=docId).first()
if not userDoc:
return abort(404)
return Response(userDoc.file_.read(), mimetype=userDoc.file_.content_type)
Run Code Online (Sandbox Code Playgroud)
这非常有效.但由于图像通常非常大,我现在希望能够提供原始图像的缩略图.所以使用Pillow我想调整图像的大小,存储/缓存它们/tmp
并在需要时提供它们.所以我从这开始:
@app.route('/doc/<docId>')
def getDoc(docId):
userDoc = UserDocument.objects(id=docId).first()
if not userDoc:
return abort(404)
desiredWidthStr = request.args.get('width')
desiredHeightStr = request.args.get('height')
if desiredWidthStr or desiredHeightStr:
print 'THUMBNAIL'
# Load the image in Pillow
im = Image.open(userDoc.file_) # <=== THE PROBLEM!!!
# TODO: resize and save the image in /tmp
print 'NORMAL'
return Response(userDoc.file_.read(), mimetype=userDoc.file_.content_type)
Run Code Online (Sandbox Code Playgroud)
当我现在注释掉有问题的行并打开首页(加载几张图片)时,所有图像加载都很好,我看到了(正如预期的那样):
THUMBNAIL
NORMAL
THUMBNAIL
NORMAL
THUMBNAIL
NORMAL
212.xx.xx.xx …
Run Code Online (Sandbox Code Playgroud) 假设我有一个表格可以描述一个家庭:
<input type="text" name="mother">
<input type="text" name="father">
<input type="text" name="child">
Run Code Online (Sandbox Code Playgroud)
但是我希望人们能够在表单中添加无数个孩子.所以我可以使用Javascript继续为更多的孩子添加新的输入,但我想知道我应该如何命名这些.我简单地做child1
,child2
,child3
等?在后端我简单地循环所有的孩子?
如果所有孩子都需要一个"年龄"输入字段怎么办?难道我只是继续添加字段,如child1_age
,child2_age
,child3_age
?
我想这会起作用,但我觉得有一个更明智的方法.有谁知道更好的方法来解决这个问题?欢迎所有提示!
我正在使用Flask构建一个网站,其中我也使用Flask-socketIO使用Websockets ,但有一点我不明白.
我建立了一个聊天功能.当一个用户发送消息时,我使用websockets将该消息发送到服务器,之后我从同一个调用中向另一个用户发送消息:
@socketio.on('newPM', namespace='/test')
@login_required_with_global
def io_newMessage(theJson):
emit('message', {'message': theJson['message']}, room=str(theJson['toUserId']))
Run Code Online (Sandbox Code Playgroud)
但是,假设我想在保存文件时向用户发出消息.这意味着我需要从文件POST的视图中发出消息.所以根据flask_socketio文档,我可以在emit中添加一个名称空间.所以我写了这个:
@app.route('/doc', methods=['POST'])
@login_required
def postDoc():
saveDocument(request.files['file'], g.user.id)
emit('my response', {'data': 'A NEW FILE WAS POSTED'}, room=current_user.id, namespace='/test')
return jsonify({'id': str(doc.id)})
Run Code Online (Sandbox Code Playgroud)
但是看到下面的堆栈跟踪仍然存在命名空间的问题; werkzeug有一个AttributeError: 'Request' object has no attribute 'namespace'
.
有谁知道我在这里做错了什么?或者这是flask_socketio中的错误?欢迎所有提示!
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
response …
Run Code Online (Sandbox Code Playgroud) 在我的Ubuntu服务器上,我安装了python-qrtools包(使用zbar),sudo apt-get install python-qrtools
用于解码Python中QR码和条形码的图像,如下所示:
>>> qr = qrtools.QR()
>>> qr.decode('the_qrcode_or_barcode_image.jpg')
True
>>> print qr.data
Hello! :)
Run Code Online (Sandbox Code Playgroud)
这完全没问题.
我现在想要存储这些数据并在以后重新生成图像.但问题是我不知道原始图像是QR码还是某种类型的条形码.我检查了qr
对象的所有属性,但似乎没有一个给我类型编码样式(QR /条/其他).
在这个SO线程中,描述了ZBar确实给出了编码样式的类型,但它只给出了Objective-C中的一个例子,而且我不确定这实际上是否是我正在寻找的答案.
有谁知道如何在Python中找到编码样式的类型(所以QR码/ BAR代码/其他)(最好使用python-qrtools包)?如果不是在Python中,是否有任何Linux命令行工具可以找到它?欢迎所有提示!
我正在用Python编写数据库迁移脚本,我在其中创建了一个可以在版本之间迁移数据库的字典.我目前这样做如下:
def from1To2():
pass # migration script here
def from2To1():
pass # migration script here
# etc
migrations = {
1: {'up': from1To2},
2: {'down': from2To1, 'up': from2To3},
3: {'down': from3To2, 'up': from3To4},
4: {'down': from4To3},
}
Run Code Online (Sandbox Code Playgroud)
但是每次创建新的迁移时,我都需要编写两个迁移脚本(上下)并将它们放在迁移字典中.由于迁移功能非常小(通常是两行),我想在迁移字典中直接写它们.在Javascript中,这看起来像:
migrations = {
1: {
'up': function(){ addSomeColumn(); recordChange(); },
'down': function(){ dropSomeColumn(); recordChange(); }
},
2: etc
}
Run Code Online (Sandbox Code Playgroud)
因为迁移函数通常是两行,所以我认为我不能使用lambda函数.有没有人知道在Python中用dict直接编写函数的其他方法?欢迎所有提示!
我在我的Flask 网站中使用Peewee ORM,我现在想构建一个版本/历史表,以便我可以跟踪对记录的更改。我正在遵循这个 SO answer 中的基本 SQL 结构。
所以要做到这一点,我需要某种方式为字段的 .save() 方法插入触发器,我想我曾经读过某种 before_save 和 after_save 挂钩,但我再也找不到类似的东西了。
那么有人知道我如何连接额外的方法来保存、更新和删除记录,以及在 Peewee ORM 中创建表吗?
欢迎所有提示!