标签: webapp2

适用于Google App Engine的Flask vs webapp2

我正在开始新的Google App Engine应用程序,目前正在考虑两个框架:Flaskwebapp2.我对我以前的App Engine应用程序使用的内置webapp框架非常满意,所以我认为webapp2会更好,我也不会有任何问题.

然而,Flask有很多好的评论,我真的很喜欢它的方法以及我在文档中到目前为止所读到的所有内容,我想尝试一下.但我有点担心我可以面对Flask的限制.

所以,问题是 - 你知道Flask可以带入Google App Engine应用程序的任何问题,性能问题,限制(例如路由系统,内置授权机制等)吗?"问题"是指我无法在几行代码(或任何合理数量的代码和工作)或完全不可能的事情中解决的问题.

作为一个后续问题:你认为Flask中是否有任何杀手级功能可以让我大吃一惊并让我使用它,尽管我可以面对任何问题?

python google-app-engine flask webapp2

115
推荐指数
2
解决办法
3万
查看次数

如何使用app引擎Python webapp2正确输出JSON?

现在我正在做这个:

self.response.headers['Content-Type'] = 'application/json'
self.response.out.write('{"success": "some var", "payload": "some var"}')

有没有更好的方法来使用一些库?

google-app-engine json webapp2

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

用于身份验证和登录的Webapp2

我想为我的python Google App Engine应用程序推出自己的登录系统(而不是使用Google的用户api).

我正在使用webapp2,我注意到有一个webapp2_extras.auth模块和一个不完整的auth教程.

有谁知道如何使用此API创建:

  • 用户注册(接收电子邮件和密码,也许可以验证电子邮件)
  • 用户使用电子邮件和密码登录

一旦我有电子邮件和密码,我在哪里存储它?在AuthStore?我如何对AuthStore进行身份验证?

python google-app-engine webapp2

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

字符%7D在网址查询中的含义是什么?

如果我使用网址访问我的webapp

/vi/5907399890173952.html

然后它工作,但当我查看日志文件,然后googlebot尝试访问生成异常的类似网址:

/vi/5907399890173952.html%7D%7D

这是什么意思,怎么能作为例外处理?来自python的消息是:

 /vi/5251302833520640.html%7D%7D 404 20ms 0kb Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) module=default version=release140319
66.249.67.109 - - [19/Mar/2014:07:53:32 -0700] "GET /vi/5251302833520640.html%7D%7D HTTP/1.1" 404 84 - "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" ms=21 cpu_ms=0 cpm_usd=0.000009 app_engine_release=1.9.1 instance=00c61b117c0bc0f980f2a37a6ac534786055d3ab
E 2014-03-19 15:53:32.678
get() takes exactly 3 arguments (2 given)
Run Code Online (Sandbox Code Playgroud)

我用于网址的正则表达式是

('/vi/(\d+)(\.html?)?', NewHandler)

更新140319 21:54 CET

我想我已经从jinja2模板中发现了泄漏:

{{scored_document.fields.0.value|safe}

我现在用另一个补丁}.

python url google-app-engine jinja2 webapp2

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

如何使用webapp2选择尾部斜杠?

我正在使用新的webapp2(现在是1.6中的默认webapp),我无法弄清楚如何在这样的代码中使尾部斜杠可选:

webapp.Route('/feed', handler = feed)
Run Code Online (Sandbox Code Playgroud)

我试过/feed/?,/feed/*,/feed\/*/feed\/?,都无济于事.

python google-app-engine webapp2

19
推荐指数
2
解决办法
5174
查看次数

webapp2 + jinja2:我怎样才能让uri_for()在jinja2-views中工作

如何向模板添加传递模型特定的URL.比方说,我想构建一个编辑链接.我猜,使用uri_for()函数将是一个简单的方法.

但以下给出了"UndefinedError:'webapp2'未定义"

{% webapp2.uri_for("editGreeting", greeting.key().id()) %}
Run Code Online (Sandbox Code Playgroud)

或者我应该在MainPage-Request-Handler中准备这些?如果是这样,我不知道如何将它们添加到每个问候语中.

以下代码示例取自:http: //webapp-improved.appspot.com/tutorials/gettingstarted/templates.html

控制器/处理器

class MainPage(webapp2.RequestHandler):
    def get(self):
        guestbook_name=self.request.get('guestbook_name')
        greetings_query = Greeting.all().ancestor(
            guestbook_key(guestbook_name)).order('-date')
        greetings = greetings_query.fetch(10)

        if users.get_current_user():
            url = users.create_logout_url(self.request.uri)
            url_linktext = 'Logout'
        else:
            url = users.create_login_url(self.request.uri)
            url_linktext = 'Login'

        template_values = {
            'greetings': greetings,
            'url': url,
            'url_linktext': url_linktext,
        }

        path = os.path.join(os.path.dirname(__file__), 'index.html')
        self.response.out.write(template.render(path, template_values))
Run Code Online (Sandbox Code Playgroud)

模板/视图:

<html>
  <body>
    {% for greeting in greetings %}
      {% if greeting.author %}
        <b>{{ greeting.author.nickname }}</b> wrote:
      {% else %}
        An anonymous person wrote:
      {% …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine jinja2 webapp2

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

有没有可用的解决方案为Google应用引擎提供xsrf/csrf支持?

现在,跨网站请求伪造在网上很常见.我在部署在Google App引擎上的我自己的网站上面对此问题.我通过检查访问日志来了解这一点.是否有可用于App引擎的XSRF/CSRF库或其他解决方案.并且,它将为我的网站添加多少负载?

python google-app-engine webapp2

17
推荐指数
3
解决办法
3199
查看次数

如何进行重定向并保留查询字符串?

我想进行重定向并保留查询字符串.像self.redirect加上发送的查询参数之类的东西.那可能吗?

python google-app-engine wsgi python-2.7 webapp2

16
推荐指数
3
解决办法
8974
查看次数

Pymongo/bson:将python.cursor.Cursor对象转换为serializable/JSON对象

MongoDb和Python(webapp2)新手.所以,我从mongodb数据库中获取了一些数据.但我无法使用json.dumps返回的数据.这是我的代码:

exchangedata = db.Stock_Master.find({"Country": "PHILIPPINES"}, {"_id" : 0})        
self.response.write(json.dumps(exchangedata)) 
Run Code Online (Sandbox Code Playgroud)

这会引发错误:

TypeError: pymongo.cursor.Cursor object at 0x7fcd51230290 is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

类型exchangedatapymongo.cursor.Cursor.如何将其转换为json对象?

python json mongodb pymongo webapp2

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

GAE webapp2会话:创建和检查会话的正确过程

我试图实现GAE的webapp2会话,但似乎很少有关于它的文档.根据http://webapp-improved.appspot.com/api/webapp2_extras/sessions.html,我的步骤如下:

1.配置并添加配置到主应用程序:

config = {}
config['webapp2_extras.sessions'] = {
    'secret_key': 'my_secret_key',
}
app = webapp2.WSGIApplication([...], config=config)
Run Code Online (Sandbox Code Playgroud)

2.在登录处理程序中创建会话

# Delete existent session
  --> not mention in the tutorial
# member is found    
self.session_store = sessions.get_store(request=handler.request)
self.session['account'] = member.account
Run Code Online (Sandbox Code Playgroud)

3.检查我的程序中的各个位置是否存在会话

if self.session['account']:
    # Session exists
Run Code Online (Sandbox Code Playgroud)

4.用户注销时删除会话

--> not mentioned in the tutorial
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 在会话创建过程中我收到错误消息"...对象没有属性'session'"(步骤2)

  2. 如何在步骤2和4中删除会话?

  3. 整个会话管理过程是否正确?

谢谢.

session google-app-engine webapp2

15
推荐指数
2
解决办法
8420
查看次数

标签 统计

webapp2 ×10

google-app-engine ×9

python ×8

jinja2 ×2

json ×2

flask ×1

mongodb ×1

pymongo ×1

python-2.7 ×1

session ×1

url ×1

wsgi ×1