3

同じ Apache インストールで 2 つの Django プロジェクトとアプリケーションを実行しています。両方のプロジェクトと両方のアプリケーションが同じ名前 (myproject.myapplication など) になっています。それらはそれぞれ別の名前のディレクトリにあるため、.../dir1/myproject/myapplication および .../dir2/myproject/myapplication のようになります。

実際の公開アプリケーションに関するすべてが正常に機能します。いずれかの管理サイトにログインすると問題ないように見えますが、切り替えて反対側の管理サイトで何らかの作業を行うと、最初の管理サイトからログアウトされます。つまり、両方の管理サイトに同時にログインすることはできません。どんな助けでも大歓迎です。

4

5 に答える 5

9

SESSION_COOKIE_DOMAINオプションを設定します。Cookie が互いに上書きされないように、サイトごとにドメインを設定する必要があります。

SESSION_COOKIE_NAME を使用して、サイトごとに異なる Cookie 名を作成することもできます。

于 2008-11-29T07:27:35.360 に答える
1

同じApacheサーバー(CentOS上)でホストされているライブサイトとステージングサイトで同様の問題が発生しました。各サイトの設定に一意のSESSION_COOKIE_NAME値を追加し(local_settings.pyで、値がない場合は作成し、settings.pyにインポートします)、ライブサイトにSESSION_COOKIE_DOMAINを設定し、ステージングにSESSION_COOKIE_DOMAIN=Noneを設定します。また、「python manage.py cleanup」を実行して、データベースから競合する情報を(うまくいけば)クリーンアップしました。

于 2009-06-17T14:23:25.433 に答える
0

推測させてください、これはあなたのローカルホストで実行されていますか? 各サイトを異なるポートに割り当てていますか? つまり、localhost:8000、localhost:8001 ..?

私は同じ問題を抱えていました!(Apache自体を実行していませんでしたが)

管理サイトにログインすると、ドメイン "localhost" に関連付けられたブラウザーで Cookie が取得されます。この Cookie には、サーバー上のデータベースに保存されているセッションへの何らかのポインターが保存されます。

他のサイトにアクセスすると、サーバーは Cookie を解釈しようとしますが、失敗します。「ゴミ」であるため、Cookieを削除すると思います。

この場合にできることは、ドメインを変更することです

最初のサイトには localhost:8000 を使用し、2 番目のサイトには 127.0.0.1:8001 を使用します。この方法では、2 番目のサイトは最初のサイトによって設定された Cookie を読み取ろうとしません。

また、必要に応じて、HOSTS ファイルを編集して 127.0.0.1 にエイリアスを追加することもできると思います。(しかし、私はこれを試していません)

于 2008-11-29T10:08:50.667 に答える
0

プロジェクト名とアプリケーション名が同じであれば、データベースとテーブルは同じになります。セッション情報を保持する django_session テーブルは、両方のサイトで同じです。異なる MySQL (またはその他の) データベースに入る異なるプロジェクト名を使用する必要があります。

于 2008-11-29T05:56:53.547 に答える
0

セッション情報はデータベースに保存されるため、実行中の両方のインスタンスでデータベースを共有している場合、1 つの場所からログオフすると両方からログオフします。データベースを共有する必要がある場合、おそらく最も簡単な回避策は、管理者権限を持つ 2 番目のユーザー アカウントを作成することです。

于 2008-11-29T07:06:58.383 に答える