我正在努力使用JQuery ajax方法和Flask,尝试进行ajax调用以检索某些表单.
我的js代码看起来像这样:
$.ajax({
type: 'POST',
url: '/projects/dummyName',
data: JSON.stringify("{'ajax': 'True'}"),
contentType: 'application/json;charset=UTF-8',
dataType: 'html',
success: function(responseData, textStatus, jqXHR) {
$("#myform").text(responseData);
},
error: function (responseData, textStatus, errorThrown) {
alert('Error: '+errorThrown + ". Status: "+textStatus);
}
});
Run Code Online (Sandbox Code Playgroud)
基本上我添加数据参数让服务器方法这是一个ajax调用.但我不能把服务器中的数据作为一个字典.尝试过方式,无法使其发挥作用.
这是虚拟服务器方法:
@app.route('/projects/<name>', methods=['GET', 'POST'])
def projects(name=None):
print(request.json)
print(request.json['ajax'])
if name:
project = db.getProject(name)
form = ProjectForm(project)
if request.json['ajax'] == True:
return render_template("myform.html", form=form)
else:
return render_template("projectView.html", form=form)
else:
return render_template("projects.html")
Run Code Online (Sandbox Code Playgroud)
所以,request.json返回一个字符串:
{'ajax':'真'}
当然,当试图访问json ['ajax']时app会中断,我得到一个BAD RESPONSE错误信息.我认为这会给我一个python dict,因为否则request.json和request.data之间的区别是两个都是字符串.
如何在ajax调用中传递所有数据的python dict?它取决于我定义contentType的方式吗?它是否依赖于JSON.stringify的使用?
将非常感谢帮助!谢谢
我试图捕获在任何服务程序中引发的任何异常,以便我可以确保我只传播已知的异常而不是像 ValueError、TypeError 等意外的异常。
我希望能够捕获任何引发的错误,并对它们进行格式化或将它们转换为其他错误,以更好地控制公开的信息。
我不想用 try/except 包含每个服务程序方法。
我试过使用拦截器,但我无法捕捉到那里的错误。
有没有办法为 grpc 服务器指定错误处理程序?就像你对 Flask 或任何其他 http 服务器所做的一样?
我使用sixohsix库从Twitter API解析一些推文的数据.我试图将推文的日期转换为我的语言环境:
from pytz import timezone
from dateutil import parser
timestamp = parser.parse(tweet["created_at"])
timestamp_arg = timestamp.astimezone(timezone('America/Buenos_Aires'))
Run Code Online (Sandbox Code Playgroud)
我得到一个unicode警告:
dateutil\parser.py:339:UnicodeWarning:Unicode相等比较无法将两个参数都转换为Unicode - 将它们解释为在time.tzname中的不等elif res.tzname和res.tzname:
我试过了
parser.parse(str(tweet["created_at"]))
parser.parse(unicode(tweet["created_at"]).encode())
Run Code Online (Sandbox Code Playgroud)
但没有变化.
除了警告,似乎没有什么打破.有谁知道为什么会发生这种情况,以及如何解决这个问题?
谢谢!
我尝试了相同的例子,但硬编码时间到字符串,没有警告的情况下工作.此外,根据该警告味精问题似乎在解析调用的情况发生,在parser.py:339时做
res.tzname in time.tzname
Run Code Online (Sandbox Code Playgroud)
也许是因为res是unicode而time.tzname不是??
我重构我的休息api服务器使用Flask-RESTful,我对某些特殊情况有一些疑问,我需要获取属于另一个的资源列表.有点像这样:
/api/v1/users/john/orders
Run Code Online (Sandbox Code Playgroud)
你会怎么设计这个?因为如果我有一个名为Orders的资源,我需要知道从哪个用户获得订单.但是我怎样才能让资源了解用户呢?我没有看到任何__ init __方法,我可以在其中指定资源的参数.
在注册Orders资源时,我考虑过这样做:
api.add_resources(Orders, '/api/v1/users/<string:username>/orders')
Run Code Online (Sandbox Code Playgroud)
但是如何在Orders资源中访问字符串:username?
我想一个解决方案就是:
api.add_resources(Orders, '/api/v1/orders/')
Run Code Online (Sandbox Code Playgroud)
并发送指定我想从中获取订单的用户的查询参数,但我想知道是否可以执行类似上面示例的操作.
我试图通过日期字段搜索集合和组记录,这是一个日期时间.我知道pymongo会在背景上将那些转换为正确的类型(ISODate或类似的东西).
问题是,因为datetime对象有日期,时间,时区..我怎么能告诉组操作员只使用日期部分?因为否则我没有得到所需的分组,因为时间阻止将同一天,月,年的记录组合在一起.
db.test.aggregate([
{"$group": {
"_id": "$date",
"count": {"$sum": 1}
}},
{"$limit": 10}])
Run Code Online (Sandbox Code Playgroud)
结果:
{u'ok': 1.0,
u'result': [
{u'_id': datetime.datetime(2014, 2, 15, 18, 49, 9, tzinfo=<bson.tz_util.FixedOffset object at 0x318f210>),
u'count': 1},
{u'_id': datetime.datetime(2014, 2, 15, 18, 36, 38, tzinfo=<bson.tz_util.FixedOffset object at 0x318f210>),
u'count': 1},
{u'_id': datetime.datetime(2014, 2, 15, 18, 23, 56, tzinfo=<bson.tz_util.FixedOffset object at 0x318f210>),
u'count': 1}]}
Run Code Online (Sandbox Code Playgroud)
控制用于分组的日期时间信息会很好,
是否有类似的东西:(或某种方式告诉仅使用日期)
db.test.aggregate([
{"$group": {
"_id": "$date.date()",
"count": {"$sum": 1}
}},
{"$sort": "_id"}
])
Run Code Online (Sandbox Code Playgroud)
或者也许有另一种处理这个问题的方法,任何想法?谢谢.
我试图测试一些处理推文的类。我使用 Sixohsix twitter 来处理 Twitter API。我有一个类作为 Twitter 类的外观,我的想法是模拟实际的 Sixohsix 类来模拟推文的到达,方法是随机生成新推文或从数据库中检索它们。
我的外观看起来像:
from twitter import TwitterStream
class TwitterFacade(object):
def __init__(self, dev='soom'):
self._auth = OAuth(dev_keys["ACCESS_TOKEN"], dev_keys["ACCESS_SECRET"], dev_keys["CONSUMER_KEY"], dev_keys["CONSUMER_SECRET"])
def tweets(self, callback=None, users=[], terms=[], locations=[], count=5):
t = TwitterStream(auth=self._auth)
args = {}
if users: args['follow'] = ",".join(users)
if terms: args['track'] = ",".join(terms)
if locations: args['locations'] = ",".join(str(l) for l in locations)
# this controls the general loop, it re-enters if there was an exception,
# otherwise the for loop should take care of …Run Code Online (Sandbox Code Playgroud) python ×6
twitter ×2
dictionary ×1
flask ×1
grpc-python ×1
interceptor ×1
jquery ×1
json ×1
mocking ×1
mongodb ×1
pymongo ×1
python-mock ×1
rest ×1
unicode ×1
unit-testing ×1