Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 单独的Django站点,具有公共授权/注册后端_Python_Django_Django Sites - Fatal编程技术网

Python 单独的Django站点,具有公共授权/注册后端

Python 单独的Django站点,具有公共授权/注册后端,python,django,django-sites,Python,Django,Django Sites,我需要将我当前的Django应用程序拆分为两个站点 站点A将包含面向公众的站点,该站点将包含所有静态页面和注册系统 另一个站点——站点B——是注册用户的站点。他们还可以通过站点B登录到应用程序站点 如果我没有弄错的话,我可以使用django.contrib.sitesframework来完成拥有多个站点的任务,但是可以拥有一个公共的身份验证/注册后端 我怎样才能做到这一点 谢谢。对于这种情况,您将有两个名为settings_A.py和settings_B.py的settings.py文件,它们指

我需要将我当前的Django应用程序拆分为两个站点

站点A将包含面向公众的站点,该站点将包含所有静态页面和注册系统

另一个站点——站点B——是注册用户的站点。他们还可以通过站点B登录到应用程序站点

如果我没有弄错的话,我可以使用
django.contrib.sites
framework来完成拥有多个站点的任务,但是可以拥有一个公共的身份验证/注册后端

我怎样才能做到这一点


谢谢。

对于这种情况,您将有两个名为settings_A.py和settings_B.py的settings.py文件,它们指定了设置导入中的
*

A的SITE=1,B的SITE=B。然后,您可以通过为每个虚拟主机DJANGO\u SETTINGS\u MODULE=SETTINGS\u A和DJANGO\u SETTINGS\u MODULE=SETTINGS\B设置环境变量,在apache配置中设置这些文件

然后设置contrib.sites应用程序,将您的2个域名绑定到相应的站点ID,您的flatpages将能够绑定到其中一个或两个站点

最后,在settings_A.py settings_B.py中,您可以指定单独的根urlconfs,或者使用urlconfs中的use settings.SITE来启用和禁用每个站点的URL组

希望这有帮助


编辑:澄清一下:只要你在两个站点之间使用相同的数据库和密钥,你也可以在它们之间使用相同的用户帐户。如果站点的形式为example.com和private.example.com,则将会话\u COOKIE\u DOMAIN设置为.example.com将允许会话在两个站点之间进行。

您可以对两个站点使用(外部)LDAP身份验证。您需要一个LDAP服务器,位于两个站点都可以访问的地方。我从未使用过这个,但我不知道它与Django auth的集成程度如何。如果两个站点运行在同一台服务器下并访问同一个数据库,那么请参见Django的
Django.contrib.sites
框架。如果您有一个分布式应用程序(不同主机上的不同站点或不同数据库上的不同站点),则可以求助于单点登录解决方案


我使用OpenID和自定义提供者来集中在不同数据库上运行的应用程序之间的登录。其他解决方案包括(和)。

+1:从未出现过这种情况,但始终是如何在我的django应用程序中使用多个站点的问题!嗨,托马斯。这听起来很合理。这是否意味着登录到站点a的人将能够登录到站点B?一个好的exmaple是谷歌,如果你登录他们的主页,你可以访问你的Gmail,文档等。我需要实现类似的东西-跨域认证。谢谢。默认情况下,如果两个域共享一个根域,例如domain.com、sitea.domain.com和siteb.domain.com,则您只能进行跨域自动登录。(这就是为什么所有谷歌网站都使用google.com作为基本域名的原因)。但是,您可以使用一个用户对象登录两个站点。对于完全不同的域之间的持久登录,请尝试以下操作: