【问题标题】:Google App Engine: Creating an Ecommerce websiteGoogle App Engine:创建电子商务网站
【发布时间】:2014-02-18 20:33:55
【问题描述】:

我正在使用带有 Python 的 Google App Engine 开发电子商务网站。现在,由于它是一个电子商务网站,我们将展示数十种产品,每个产品都有自己的网页。现在,我的问题是,如果我们的服务器上有大约 400 个网页,它会不会让网站变得非常笨重和庞大?这不会影响用户体验吗?

我们如何管理 Google App Engine 上的 400 多个网页?尽管在服务器上托管了多个网页,但如何让 Web 应用程序变得不那么笨重,有什么我不知道的吗?

【问题讨论】:

  • 如果您认为必须为每个产品创建 400 个单独的 HTML 页面,您不必这样做。您将创建一个产品页面布局并让您的后端用数据填充它。
  • 您可以使用您在众多 Python Web 框架(Django、Flask、Web2Py 等)之一中创建的任何后端来管理页面,并且 400 个页面并不大或不笨重,尤其是因为这些页面应该是大部分是公式化的,并使用来自数据的模板生成。
  • IanAuld,您能否详细说明如何使用每个页面的自定义数据填充我的布局产品页面?
  • @ManasChaturvedi 有很多类似的选择。我更喜欢自己使用 Flask,但它肯定不是唯一的选择。 flask.pocoo.org 应该可以帮助您了解 Flask 提供的功能。
  • 如果你还没有完成 GAE 教程,你应该完成它。我也喜欢 Flask。如果你有兴趣,我有一个很好的起点:docs.gae-init.appspot.com/tutorial

标签: python google-app-engine e-commerce


【解决方案1】:

您可以使用 webapp2 框架并从数据存储中获取产品信息并使用模板进行渲染。您为您的产品创建一个实体,例如

class Product(db.Model):

    tags = db.ListProperty(db.Category)
    category = db.CategoryProperty(verbose_name='Category')
    title = db.StringProperty(verbose_name='title')  # required
    text = db.TextProperty(verbose_name='text')

然后你有一个使用 webapp2、flask、bottle 或类似的处理程序类来获取你的产品数据并使用例如 jinja 2 模板引擎呈现它。

class ProductHandler(BaseHandler):

    def get_product(self, key):
        data = memcache.get(key)
        if data is not None:
            return data
        else:
            data = Product.get_by_id(long(key))
            memcache.add(key, data, 6000)
            return data

    def get(self, id, html):
        product= self.get_product(id)
        if not product:
            self.error(404)
            return

        self.render_jinja(
            'view_product',
            product=product)

然后在您的模板中,您可以使用 view_product.html 上的变量,例如

 {{product.title}

并且路由是通过 webapp2 的配置对象完成的(如果您使用 flask 或 bottle,这将有所不同,但如果您使用 flask 或 bottle,则无法利用 webapp2 的附加功能,例如用户模型和 i18n)

app = webapp2.WSGIApplication([('/view/(\d+)(\.html?)?', ProductHandler),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-07
    • 2013-11-15
    • 2018-08-07
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    相关资源
    最近更新 更多