1

私は以下のように構成されたモバイル部分settings.pyのdjangoプロジェクトを持っています

MIDDLEWARE_CLASSES = (
                      'site_middleware.SetSiteFromHost',
                     )
SITE_ID = 1

および site_middleware.py :

class SetSiteFromHost:


    def process_request(self, request):
        if mobileBrowser(request):
            if request.GET.get('server', False):

                request.session['server_mode'] = True
                site = 1
            elif request.session.get('server_mode') == True:

                site = 1
            else:

                request.session['server_mode'] = False
                site = 2

        else:
            site = 1
        settings.SITE_ID = site

エラーは表示されませんが、切り替えが機能していませんか?

4

1 に答える 1

2

ドキュメントから:実行時に設定を変更します

実行時にアプリケーションの設定を変更しないでください。

from django.conf import settings

settings.DEBUG = True   # Don't do this!

設定に割り当てる必要がある唯一の場所は、設定ファイル内です。

最良の方法は、いくつかの設定ファイルを作成することだと思います:

ファイルbase_settings.py:

 ... all your settings for all sites ...

ファイルfirst_site_settings.py:

from base_settings import *

SITE_ID = 1

... other settings for this site ...

ファイルsecond_site_settings.py:

from base_settings import *

SITE_ID = 2

... other settings for this site ...

そして、各サイトを個別の djano プロセスとして実行します。

$ python mysite/manage.py runserver --settings=mysite.first_site_settings
$ python mysite/manage.py runserver --settings=mysite.second_site_settings
于 2012-10-11T12:23:51.623 に答える