首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django子域a la craigslist.com

django子域a la craigslist.com
EN

Stack Overflow用户
提问于 2012-05-11 07:45:34
回答 2查看 709关注 0票数 4

我对设置我的应用程序感兴趣,这样我就可以提供特定于位置的内容。

比如craigslist,miami.craigslist.org只显示迈阿密的帖子。

假设我有一个具有City字段的模型,那么实现这一目标的最佳方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-11 08:19:05

Banjer推荐了Sites框架,但我觉得它可能不是100%完美地适合你的情况。sites框架适用于共享同一数据库的不同站点。但在你的情况下,这都是相同的网站,你基本上只是想传递一个论点,为你的城市观点。

您可以做一些更简单的事情,只需将通配符*.domain.com指向您的django站点,然后在视图中使用request.get_host()解析出子域:

https://docs.djangoproject.com/en/1.4/ref/request-response/#django.http.HttpRequest.get_host

因此,如果域名是:"losangeles.domain.com",并且您解析出了"losangeles",那么您可以在查询中使用它作为您的城市“标签”。当你创建新的内容时,你可以用一个城市来标记它。

代码语言:javascript
复制
Post.objects.filter(city_tag="losangeles")

我想这取决于你的站点中“位置”结构的健壮性。它很可能是一个包含各种元数据字段(包括tag字段)的City模型。然后将其作为外键与内容相关联。它在某种程度上接近了与站点框架相同的一般概念,但在这种情况下,您并没有真正创建不同的站点。

票数 5
EN

Stack Overflow用户

发布于 2012-05-11 08:01:44

你应该去看看"sites" framework。如果您曾经使用过内置的Django admin,那么您可能见过站点部分,其中默认情况下example.com是唯一列出的站点。

真实世界的例子,来自我提供的链接:

将内容与多个网站关联的

由姜戈提供动力的网站LJWorld.com和Lawrence.com由堪萨斯州劳伦斯市的劳伦斯世界报同一家新闻机构运营。LJWorld.com专注于新闻,而Lawrence.com专注于本地娱乐。但有时编辑想要在两个网站上发表一篇文章。

解决这个问题的办法是要求网站制作人发布同一篇文章两次:一次是针对LJWorld.com,另一次是针对Lawrence.com。但这对于网站制作者来说效率很低,而且在数据库中存储同一故事的多个副本也是多余的。

更好的解决方案很简单:两个站点使用相同的文章数据库,一篇文章与一个或多个站点相关联。

因此,您可以在Site的模型中添加一个字段,而不是City字段,例如:

代码语言:javascript
复制
sites = models.ManyToManyField(Site)

你基本上有一个所有城市都在使用的数据库。很方便,但我想知道它将如何扩展。我正在自己开始一个类似的项目,并将使用Django sites框架来启动该项目。不过,我有兴趣从数据库人员那里听到一种更具伸缩性的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10543620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档