同一Django应用程序的不同版本

同一Django应用程序的不同版本,django,facebook,Django,Facebook,这是一个设计问题。我的目标如下: Django webapp对应于一个网站。我希望该网站可以通过其官方域名访问,但也可以从Facebook内部访问 但是,如果用户在Facebook内,我希望应用程序使用不同的模板文件夹,其中包含所有模板的“lite”版本 在第一次迭代中,我的团队通过URL实现了这一点: -url.com将带您进入使用普通模板呈现的页面 -url.com/?fbapp=true将带您进入使用lite模板呈现的页面 现在,我的问题是,为了定义模板,检测Facebook上运行的应用程

这是一个设计问题。我的目标如下:

Django webapp对应于一个网站。我希望该网站可以通过其官方域名访问,但也可以从Facebook内部访问

但是,如果用户在Facebook内,我希望应用程序使用不同的模板文件夹,其中包含所有模板的“lite”版本

在第一次迭代中,我的团队通过URL实现了这一点: -url.com将带您进入使用普通模板呈现的页面 -url.com/?fbapp=true将带您进入使用lite模板呈现的页面

现在,我的问题是,为了定义模板,检测Facebook上运行的应用程序的最佳方法是什么? -像上面这样的URL参数是一种方式,在我看来是一种不好的方式; -某些会话变量(但这可能不好,因为一个人在Facebook和同一浏览器中的站点上浏览应用程序时,会得到相同的模板类型)

应该有一些东西让我能够区分一个人何时访问我的网站url.com,以及他们何时通过Facebook应用程序访问它

有人能帮忙吗


Cheers

Facebook通过iframes包含您的网站,因此就您的网站而言,嵌入Facebook与直接访问没有区别。您已经完成的操作(添加查询字符串)与任何方法一样合理。

有很多方法可以做到这一点,get参数看起来不是最优雅的,但仍然有效(只要您记得将其保留在适当的位置)

解决这个问题的一种方法是在两个不同的根URL上运行应用程序,例如

/与“常规”应用程序匹配

/facebook/将应用程序的根目录与FB模板匹配

然后你只需要为facebook应用程序使用一个不同的设置文件,然后设置如下内容

USE_LITE_TEMPLATES = True 

甚至更改模板的根路径,处理整个facebook的事情,而不必在视图中触摸一行代码:)

这听起来正是我想要的。但是,考虑到您运行的是一个项目(不是应用程序),而一个项目只有一个设置文件,如何使用不同的设置运行同一项目的两个版本?