3

レガシー データベースに基づく認証バックエンドがあります。User誰かがそのデータベースを使用してログインし、対応するレコードがない場合は、作成します。私が疑問に思っているのは、この事実を Django システムに警告する方法があるかどうかです。たとえば、新しいユーザーを別のページにリダイレクトできるようにするためです。

is_new私が考えることができる唯一のことは、一度テストされFalse、リダイレクトされるとすぐに設定されるようなフラグをユーザーのプロファイルレコードに追加することです。

基本的に、他の誰かがこれを理解しているかどうか疑問に思っているので、車輪を再発明する必要はありません.

4

3 に答える 3

1

オブジェクトが作成されたかどうかを判断する方法として、私が知っている方法が 2 つあります。

1)get_or_createタプルを使用すると、オブジェクトが作成されたかどうかを明らかに十分に示すブール値であるフォーム(obj, created)が返されます。created

2)post_save信号はcreated、オブジェクトが作成されたかどうかも示すブール値のパラメーターを渡します。

最も単純なレベルでは、これら 2 つのフックのいずれかを使用してセッション変数を設定し、それを確認して適宜リダイレクトすることができます。

get_or_createうまくいけば、呼び出し後またはpost_saveシグナル内で直接リダイレクトすることもできます。

于 2011-05-11T21:13:53.950 に答える
1

これを達成する最も簡単な方法は、あなたが言ったとおりにすることです。私のプロジェクトの 1 つで同様の要件がありました。初めてプロフィールにアクセスするまで、新しいメンバーに「プロフィールを更新することを忘れないでください」というメッセージを表示する必要がありました。クライアントはすぐにそれを望んでいたので、「visited_profile」フィールドをユーザーのプロファイルに追加し、デフォルトを False に設定しました。

実装が非常に高速で、登録プロセスをいじる必要がなく、既存のユーザーと連携し、ページの読み込みごとに追加のクエリを必要としなかったため、これに落ち着きました (ユーザーとユーザー プロファイルはすべてのページで既に取得されているため)。 )。フィールドを追加し、南への移行を実行し、if タグをテンプレートに挿入するのに 10 分かかりました。

于 2011-05-11T23:58:26.910 に答える
-1

ファイルベースのキャッシュを使用して、データベースにまだ保存されていないユーザーを格納できます。ユーザーが 2 回目にログインすると、キャッシュを調べてユーザー オブジェクトを見つけ、それをデータベースに完全に保存できます。

django キャッシングに関する情報は次のとおりです: http://docs.djangoproject.com/en/dev/topics/cache/?from=olddocs

PS: Memcached は使用しないでください。コンピューターのクラッシュまたはシャットダウンの状況ですべての情報が削除されるためです。

于 2011-05-11T23:36:38.020 に答える