Django:支持多站点和多语言的管理后台
我需要建立一些Django应用程序,这些应用可以通过一个后台管理多个网站。contrib.sites
这个框架非常适合我的需求。我可以用不同的设置运行多个manage.py
实例来管理每个网站;但是,Django的管理后台应该如何处理不同网站的不同设置呢?比如说,如果它们有不同的语言设置,或者默认语言不同?所以,当你需要在一个管理后台处理来自不同网站的内容时,会面临一些问题……
我觉得settings.ADMIN_FOR
可能在这种情况下很有帮助,但几乎没有相关的文档,而且我觉得在当前的Django版本中并没有真正使用它(?)。
所以,任何想法或解决方案都非常欢迎,感谢大家!
1 个回答
1
这里有一篇老文章,作者是James Bennet,可能对你有帮助:
- 在你的管理后台为每个域名创建一个新的站点对象,并把这个站点的ID放到设置文件里,作为SITE_ID,这样Django就知道这个设置文件对应数据库里的哪个站点。
- 在你原始站点的设置文件中(也就是ID为1的那个),把其他站点的设置文件添加到ADMIN_FOR设置里,让Django知道这个管理应用的实例会处理所有的站点。
根据文档,ADMIN_FOR应该是一个设置模块的元组,就像INSTALED_APPS是Django应用模块的元组一样。
需要注意的是,这篇博客是2006年的,所以使用了一些过时的API。