【问题标题】:website needs update in python网站需要在 python 中更新
【发布时间】:2012-10-18 09:13:32
【问题描述】:

我正在大修的网站目前使用 python 2.3.7,并使用 Google App Engine 进行管理,它必须更新到 2.7,并且由于新版本的功能,模板部分已折旧。需要进行哪些必要的更改?仅供参考,我是一名高中生,为聊天室网站做这件事。当我为 app.yaml 重写更改时,更改 .py 中的代码(然后我将文件重命名为 .app),它会引发此回溯错误。帮忙?

File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 196, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/base/python27_runtime/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 255, in _LoadHandler
    handler = __import__(path[0])
ImportError: No module named devchat

我的进口是

import cgi
import os
import urllib
import logging

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
from google.appengine.ext.webapp import template
from google.appengine.api import memcache

关于模板的代码部分在这里

class BaseRequestHandler(webapp.RequestHandler):

  def generate(self, template_name, template_values={}): 
    # We check if there is a current user and generate a login or logout URL
    user = users.get_current_user()

    if user:
      log_in_out_url = users.create_logout_url('/')
    else:
      log_in_out_url = users.create_login_url(self.request.path)

    # We'll display the user name if available and the URL on all pages
    values = {'user': user, 'log_in_out_url': log_in_out_url}
    values.update(template_values)

    # Construct the path to the template
    directory = os.path.dirname(__file__)
    path = os.path.join(directory, 'templates', template_name)

    # Respond to the request by rendering the template
    self.response.out.write(template.render(path, values, debug=_DEBUG))

class MainRequestHandler(BaseRequestHandler):
  def get(self):
    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 = {
      'url': url,
      'url_linktext': url_linktext,
      }

    self.generate('index.html', template_values);

class ChatsRequestHandler(BaseRequestHandler):
  def renderChats(self):
    greetings_query = Greeting.all().order('date')
    greetings = greetings_query.fetch(1000)

    template_values = {
      'greetings': greetings,
    }
    return self.generate('chats.html', template_values)

  def getChats(self, useCache=True):
    if useCache is False:
      greetings = self.renderChats()
      if not memcache.set("chat", greetings, 10):
        logging.error("Memcache set failed:")
      return greetings

    greetings = memcache.get("chats")
    if greetings is not None:
      return greetings
    else:
      greetings = self.renderChats()
      if not memcache.set("chat", greetings, 10):
        logging.error("Memcache set failed:")
      return greetings

  def get(self):
    self.getChats()

  def post(self):
    greeting = Greeting()

    if users.get_current_user():
      greeting.author = users.get_current_user()

    greeting.content = self.request.get('content')
    greeting.put()

    self.getChats(False)`

【问题讨论】:

  • 你有什么问题?有错误吗?正在使用什么 webapp 库/框架(导入了什么)?
  • 您说您将文件重命名为.app?您实际上不需要这样做 - 您看到的main.app 示例可以读作“main.py 内部的app 变量”。因此,您的第一步是将文件重命名为devchat.py(或任何原始文件:))。然后,您要确保在您的 devchat.py 中有一行读取类似 app = webapp.WSGIApplication([('/', MainRequestHanlder)]) 的内容,您将在其中布置处理程序。
  • 某些东西(可能在您的 app.yaml 中,也可能在另一个文件中)正在尝试导入不存在或已重命名的 devchat。你能找到发生这种情况的地方吗?另外,如果你将 python 更新到 2.7 版,你肯定会想要update your google app engine SDK。
  • 它说我也需要从 webapp 更新到 webapp2,现在它从 sdk 日志告诉我什么,我需要添加库?

标签: python django google-app-engine templates livechat


【解决方案1】:

这是一个非常好的视频,它解释了如何更新应用程序:https://developers.google.com/events/io/sessions/gooio2012/300/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    相关资源
    最近更新 更多