标签: webapp2

如何使用python27 app engine webapp2框架组织文件

我已经完成了python27和app引擎的入门:https://developers.google.com/appengine/docs/python/gettingstartedpython27/

在tut结束时,所有类都在同一个文件(helloworld.py)中,您和您配置路由器以指向文件底部的类的URL路径:

 app = webapp2.WSGIApplication([('/', MainPage),
                           ('/sign', Guestbook)],
                          debug=True)
Run Code Online (Sandbox Code Playgroud)

啧啧没有涉及的是我如何在我的应用程序增长时设置我的类/文件.例如,我将MainPage放在一个单独的文件中,然后在helloworld.py文件中调用'import MainPage'并将路由添加到WSGIApplication中吗?有没有比这更自动化的东西?我该怎么称呼MainPage文件?我应该在哪里存储它?

python google-app-engine python-2.7 webapp2

6
推荐指数
1
解决办法
1167
查看次数

为什么用@ webapp2.cached_property装饰Jinja2实例

webapp2站点(http://webapp-improved.appspot.com/api/webapp2_extras/jinja2.html)有一个如何使用的教程webapp2_extras.jinja2,代码如下.

我的问题是:为什么缓存webapp2_extras.jinja2.Jinja2实例返回return jinja2.get_jinja2(app=self.app)?我检查了代码@webapp2.cached_property并发现它将Jinja2实例缓存在一个实例中BaseHandler,它会在请求后被销毁,所以为什么要费心去缓存呢?我在这里错过了什么吗?

import webapp2

from webapp2_extras import jinja2

class BaseHandler(webapp2.RequestHandler):

    @webapp2.cached_property
    def jinja2(self):
        # Returns a Jinja2 renderer cached in the app registry.
        return jinja2.get_jinja2(app=self.app)

    def render_response(self, _template, **context):
        # Renders a template and writes the result to the response.
        rv = self.jinja2.render_template(_template, **context)
        self.response.write(rv)

caching properties jinja2 webapp2

6
推荐指数
1
解决办法
1633
查看次数

在Visual Studio的Python工具中调试GAE

我可以使用Python工具for Visual Studio 2012 运行我的Google App Engine webapp2应用程序,无需遵循本教程,甚至单步执行服务器初始化代码,但是我无法在获取或发布方法时使用它来解决问题.网站已加载,类似于此视频中显示的main()方法.当我暂停调试器时,它总是在wsgi_server.py中的以下无限循环中结束:

def _loop_forever(self):
  while True:
  self._select()

def _select(self):
  with self._lock:
    fds = self._file_descriptors
    fd_to_callback = self._file_descriptor_to_callback
if fds:
  if _HAS_POLL:
    # With 100 file descriptors, it is approximately 5x slower to
    # recreate and reinitialize the Poll object on every call to _select
    # rather reuse one. But the absolute cost of contruction,
    # initialization and calling poll(0) is ~25us so code simplicity
    # …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine visual-studio webapp2 ptvs

6
推荐指数
1
解决办法
3094
查看次数

部署应用程序后,Google App Engine HTTP标头内容类型不正确

我正在GAE上编写一个应用程序,我有一个URL,它将始终返回XML并将Content-Type设置为"text/xml; charset=utf-8".

我正在使用内置的webapp框架并使用以下代码来设置内容类型并在Web处理程序中返回XML:

self.response.headers.add_header('Content-Type',"text/xml; charset=utf-8")
self.response.out.write(template.render("my_xml",{"key1":"val1"}))
Run Code Online (Sandbox Code Playgroud)

这在本地开发环境中运行良好,但是一旦部署到Google服务器,内容类型始终设置为"text/html; charset=utf-8".

如何Content-Type在Google服务器上运行后确保设置正确?

google-app-engine webapp2

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

在appengine之外运行webapp2,如何将其作为服务/ deamon运行?

我刚刚完成了我的应用程序并希望部署它.但是如何运行我的应用程序作为服务/ deamon?

谷歌搜索显示使用一些python库的一些不同的approches,扭曲和我可以运行Python脚本作为服务吗?.但无法弄清楚该怎么做.

有人这样做过吗?有最佳实践方法吗?

..fredrik

python webapp2

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

如何使用webapp2添加auth_id?

我使用webapp2中的auth模块,我想知道如何添加像'facebook:fbuserid12121212'这样的auth_id,并将其添加到用户的auth_id:s列表中.但我发现API中没有允许我这样做的功能.你能告诉我怎么做吗?

谢谢

python google-app-engine authorization webapp2

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

webapp2 - 如何反转模板中的URL?

我从webapp2开始.我的英语不是很好,所以我将用一个例子来解释我的问题:假设我正在构建一个处理汽车信息的应用程序.

我有这些处理程序:

  • ViewHandler:将显示单个车辆的视图,包含所有信息(引擎,年份,品牌,型号等).
  • ListHandler:将显示应用程序中的所有汽车,并带有指向视图页面的链接.

问题是我无法建立到单一视图的链接.

我可以在模板中执行此操作:

<ul> 
  <li><a href='/cars/view/{{car.id}}'>{{car.model}}</a></li> 
</ul> 
Run Code Online (Sandbox Code Playgroud)

但是不喜欢(毕竟DRY原则在哪里?)我想知道是否有一些方法可以做到类似于django,解析模板中的URL,如下所示:

<ul> 
  <li><a href='{% url cars.view car.id}'>{{car.model}}</a></li> 
</ul> 
Run Code Online (Sandbox Code Playgroud)

也许它不在模板中.我尝试过webapp2.url_for()但没有帮助.

非常感谢!

python google-app-engine web-applications webapp2

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

GAE + Python2.7 + webapp2 + AJAX

是否有任何与GAE + Python2.7 + webapp2的AJAX实现相关的教程或代码示例.

我试图按照以下说明操作:

http://code.google.com/appengine/articles/rpc.html

但是我收到以下错误:

Traceback (most recent call last):
  File "E:\dev\workspace\test\webapp2.py", line 1536, in __call__
    rv = self.handle_exception(request, response, e)
  File "E:\dev\workspace\test\webapp2.py", line 1530, in __call__
    rv = self.router.dispatch(request, response)
  File "E:\dev\workspace\test\webapp2.py", line 1278, in default_dispatcher
    return route.handler_adapter(request, response)
  File "E:\dev\workspace\test\webapp2.py", line 1101, in __call__
    handler = self.handler(request, response)
TypeError: __init__() takes exactly 1 argument (3 given)
Run Code Online (Sandbox Code Playgroud)

这里还有另一个类似的讨论:

Google App Engine Python Protorpc错误:__ call __()只取1个参数(给定3个)

继承人是我在Specialscope的例子中的代码:

main.py

from BaseHandler import BaseHandler  
from google.appengine.ext import blobstore  
from …
Run Code Online (Sandbox Code Playgroud)

ajax google-app-engine python-2.7 webapp2

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

分号后切断包含分号的POST

如果我有一个POST参数

d={"data": "<span>hello</span>"}
Run Code Online (Sandbox Code Playgroud)

这是一个JSON字符串,它工作正常,request.POST.get('d')包含完整的字符串.但如果我把它改成

d = {"data": "<span>hel;lo</span>"}
print (request.POST.get('d')) #prints '{"data": "<span>hel'
Run Code Online (Sandbox Code Playgroud)

出于某种原因,分号后的任何内容都被切断了.我可以确认这不是Javascript这样做,因为我曾经使用完全相同的javascript代码发布到能够检索数据的PHP API.自从迁移到Python和webapp2以来,我遇到了这个问题.

python google-app-engine python-2.7 webapp2

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

创建一个简单的python Web应用程序

我有一个python脚本,从命令行获取输入.我只是想修改这个脚本,以便我可以在网上运行它.我希望命令行界面被网页中的简单框替换,一旦执行了脚本,我希望结果显示在网页上,就像在命令行中一样.

任何有关从哪里开始的帮助,使用哪些python包以及采取哪些步骤都将非常感激.

到目前为止,我读了一些关于Google App Engine和web.py的webapp2.我不想使用Django.

谢谢!

python python-2.7 webapp2 web

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