使用类方法导入模块(webapp2.RequestHandler)来检查cookie(GAE-Python)

时间:2013-11-01 16:02:28

标签: python google-app-engine python-2.7 cookies webapp2

我需要检查一个cookie并使用该值来设置要加载的模板。 以下是工作代码段:

import webapp2 as webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template
import os

class genericPage(webapp.RequestHandler):
    def get(self):
        templatepath = os.path.dirname(__file__) + '/../templates/'
        ChkCookie = self.request.cookies.get("cookie")
        if ChkCookie == 'default':
            html = template.render(templatepath + 'default_header.html', {})
        else:
            html = template.render(templatepath + 'alt_header.html', {})
    self.response.out.write(html)

我的问题是如何将ChkCookie和if ... else语句移动到一个单独的模块中并在上面的代码中调用它。如:

# HOW I WANT TO MODIFY THE ABOVE CODE TO SET THE TEMPLATES WITH A COOKIE
import webapp2 as webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template
import os
from testmodule import testlibrary

class genericPage(webapp.RequestHandler):
    def get(self):
        html = testlibrary.ChkCookieClass.ChkCookie()
    self.response.out.write(html)

当我将ChkCookie代码保存在genericPage类中并且模块只包含一个函数时,我可以成功导入库/模块,如下所示:

# THIS IS THE MODULE I AM IMPORTING
import webapp2 as webapp
from google.appengine.ext.webapp import template
import os

def SkinChk(ChkCookie):
    templatepath = os.path.dirname(__file__) + '/../templates/'
    if ChkCookie == 'default':
        out = template.render(templatepath + 'default_header.html', {})
    else:
        out = template.render(templatepath + 'alt_header.html', {})
    return out

我如何修改上面的模块代码以使其中有ChkCookie = self.request.cookies.get("cookie")

1 个答案:

答案 0 :(得分:0)

您可以使用:http://webapp-improved.appspot.com/api/webapp2.html#webapp2.get_request来获取模块中的请求实例。

这与将self.request传递给您的模块相同。