【问题标题】:Can namespaces enable multiple domains?命名空间可以启用多个域吗?
【发布时间】:2011-09-13 01:25:45
【问题描述】:

我的 gae 应用程序通过if..else.. 条件而不是命名空间为多个域提供服务。 我看到其他人用命名空间解决了它

“我有一个定义了多个命名空间的应用程序。

我想设置多个域

a.com b.com c.com

并让应用检测域并将域的数据写入 其各自的命名空间。”

我不知道如何使用命名空间,我想要一种更好的方法来将域添加到应用程序中以进行内容和语言等设置。例如,通过表单发送电子邮件,然后我只使用条件而不是名称空间。

class FileUploadHandler(blobstore_handlers.BlobstoreUploadHandler):
  def post(self):
    adminemail = 'admin@domain1.com' if gethost() is 'domain1' else 'admin@domain2.com'
    message = mail.EmailMessage(sender=admin_email, subject=self.request.POST.get('subject'))
    message.body = ...
    message.to='info@domain...
    message.send()
    self.redirect('/customer_service.htm')

我对查询、本地化甚至在某些情况下甚至要渲染到哪个模板都使用相同的解决方法,而我应该能够使所有域都能够基于相同的模板并且仅在内容上有所不同,这样我的应用程序就不难了- 对应该易于添加和更改的域和其他设置进行编码。

在这种情况下,命名空间是个好主意吗?到目前为止,管理不同域问题的方式是它来自哪个域的实体的变量

if util.get_host().find('my-dot-com') > 0:
    url = 'www.my-dot-com.com'

我有一个函数可以定义我的意思,但它可能会将 www.domain.com 与 domain.com 混淆或子域有问题

def get_host():
  return os.environ.get("HTTP_HOST", os.environ["SERVER_NAME"])

如果您有任何想法,或者我弄错了,在这种情况下不应该使用命名空间,我很高兴知道。

谢谢

【问题讨论】:

    标签: python google-app-engine namespaces google-cloud-datastore


    【解决方案1】:

    是的,命名空间非常适合您的工作。只需将配置数据(如管理员电子邮件)存储在每个域的配置记录中,并将给定域的所有记录存储在以该域命名的命名空间中。

    【讨论】:

    • 如果您需要域中的每个用户信息,请使用“域/用户”的命名空间。在处理程序中多次切换命名空间是可以的。
    • @Dave 这行得通,但它是一个罕见的网站,可以完全隔离每个用户的数据(可能类似于密码保险箱)。
    • 感谢您提供有趣的答案和 cmets。我还希望看到一些代码,其中我当前的实现非常基本,即来自 os.environ["SERVER_NAME"] 的变量 entity.url 或表示命名空间的 HTTP_HOST。该实体还具有变量entity.user 来指示所有权和来源。我可以为域创建记录并存储它们,以使我的代码更像是一个白标产品,而不是硬编码。
    • @Niklas 命名空间以及如何为每个请求设置它们都记录在 here。如果有什么特别的事情你对如何实施感到困惑,一定要问。
    • @Nick 从链接中我可以找到并学习示例guestbook_namespaces。感谢您的大力帮助。
    猜你喜欢
    • 2016-03-02
    • 1970-01-01
    • 2014-09-14
    • 2012-06-24
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多