問題タブ [django-authentication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
562 参照

django - Django および Django admin で機能するようにユーザーにロールを追加するには、どのタイプのモデル設計を使用する必要がありますか?

Django のデフォルト認証システム (django.contrib.auth) を使用しています。Django 管理者が操作できるように、ユーザーに「ロール」を追加したいと考えています。

例:

  • ユーザーは、スタッフ教師生徒、および/または親になることができます
  • ユーザーにロールが割り当てられている場合、ユーザーは権限を取得します (たとえば、スタッフメンバーは Django 管理者にサインインできます) 。
  • 一部のロールには追加のフィールドがある場合があります (たとえば、は少なくとも 1 人の生徒と関係があり、各生徒はクラスグループのフィールドを持っています)。
  • すべてのロールに追加のフィールドがあるわけではありません
  • 保護者は教師またはスタッフになることができ、その逆も可能です
  • 学生は別の役割を持つことはできません

モデル内で上記を達成するためのあらゆる種類の (従来の) 方法があります。Django はそれらの多くをサポートしていますが、Django 管理者はサポートしていません。Django admin には多くの優れた機能があるので、それを使用したいと思います (しかし、それが不可能になるのではないかとますます恐れています)。

最初に考えたのは次のモデルです。

これは Django (および他の多くの MVC ベースのフレームワーク) で機能します。しかし、管理画面で上記を表示する適切な方法が見つかりません。

理想的には、ユーザーを追加してから、ユーザー変更ビュー内にさまざまな役割を追加したいと考えています。最初は、インラインを使用できると思いました:

次に、インライン テンプレートに若干の変更を加えて、編集ユーザー ボタンに「学生ロールの追加」というキャプションを表示します。ボタンをクリックすると、フォームが表示され、ユーザー ロールが追加されます。理想的ではありませんが、機能します。

残念ながら、Staffmembers にはインライン フォームに追加するフィールドがありません。この方法では、インライン フォームの「has_changed」プロパティをトリガーすることはできません。これにより、新しい役割がデータベースに保存されません。

この最後の問題を解決するために、私は少しハックして空のユーザーロールに「ダミー」フォームフィールドを追加し、JS を使用してこのフィールドを非表示にしました。これにより、has_changed がトリガーされました。

それでも、後でいくつかのテスト中にインラインモデルが保存されない場合、これはうまくいきません。

だから私はそれを間違った方法でやっているだけだと思います。私は多くのグーグルを行い、多くの人が同じ種類の問題に悩まされていることを発見しました. 私の状況に最も適していたのはhttp://www.mail-archive.com/django-users@googlegroups.com/msg52867.htmlでした。しかし、それでもこのソリューションでは、管理者を簡単に実装する方法はありません。

組み込みのグループを使用することも考えましたが、その場合、さまざまなフィールドを追加する方法がわかりません。

私が考えたもう1つのことは、ユーザーを追加して彼に役割を割り当てる代わりに、「学生を追加」しようとすることでした。ユーザーを継承するだけの場合、これは管理者で非常にうまく機能します。

しかし、ここで 2 つの問題があります。最初はスタッフや教師になることはできません。2 つ目は、Django の残りの部分では、リクエスト オブジェクトが User オブジェクトを返し、そのために Student、Parent、Staffmember オブジェクトをリクエストすることが実際には機能していません。これらのいずれかを取得する唯一の方法は、User オブジェクトに基づいて新しい Student オブジェクトをインスタンス化することです。

Django と Django admin で機能するようにユーザーにロールを追加するには、どのタイプのモデル設計を使用する必要がありますか?

よろしく、 Wout

0 投票する
1 に答える
2483 参照

django - Djangoの組み込みのログインビューとエラー

ビューを使用していdjango.contrib.auth.views.login and .logoutます。非常に便利で、箱から出してすぐに使用でき、AAA+などを再度展開できます。

この問題は、個別のログインページを使用していないために発生しますが、すべてのページにログインボックスがあります(もちろん、ユーザーがログインしていない場合)。そのため、ユーザー名とパスワードの組み合わせが間違っていると、エラーが発生します。これらの3つのパスのどれを選択する必要がありますか?

  • 成功だけでなくエラーでも次へリダイレクトする秘密の方法があります。もしそうなら、教えてください!
  • 私は自分のログインビューを作成し、その間にDjangoのメッセージシステムを使用します
  • ログインページを作成して(テンプレートがないだけです)、Django認証システムの素晴らしさを最大限に活用できます。
0 投票する
1 に答える
66 参照

django-admin - django appは、auth.userとapp userを同時に作成し、auth.user_idをapp.userに保存します

auth.userとアプリを介してシステムにユーザーを追加するアプリがあります。保存時に、ユーザーを作成してからauth.user.idを取得し、それをteam_user.idに追加します。

私は以下のコードを試しましたが、どこにも行きません。私が間違っていることについて何か提案はありますか?お知らせ下さい。

0 投票する
1 に答える
1207 参照

django - Django: first_name.last_name でクリーンなユーザー名を作成する

空想の代わりに、私のウェブサイトではfirst_name.last_nameusernameの形式で正規化されたユーザー名を使用する方がよいでしょう。

この種のユーザー名で新しいユーザーを作成するのは簡単です

しかし、それらが含まれるように両方のフィールドをきれいにする最良の方法は何ですか:

  1. スペースなし 例: Théodore de Banville
  2. アクセントなし 例: Raphaël LeBlond
  3. その他問題のある文字

reとを使用することを考えましたunidecode

しかし、これで十分ですか?

編集:これが私の現在の解決策です:

0 投票する
1 に答える
203 参照

django - Djangoフォームは常に失敗します

Django の組み込み認証モジュールを使用しようとしています。私が取り組んでいるサイトでは、通常の英数字フィールドだけでなく、電子メール アドレスをログイン名として使用したいと考えています。これを行うために、すべての文字列フィールドを電子メール フィールドに変更し、最大長を 30 から 320 に変更しました。登録コードは正常に機能しているように見えますが、ログイン コードは機能していないようです。これが私が今使っているものです:

何を送信しても、form.is_valid() は FALSE を返しますが、form.errors は空です。何が間違っているのでしょうか?すべてを電子メールのプロパティに変更したと思うので、それだけではないと思います。また、何かが変更された場合に備えて、 djangoappengineを使用して Google アプリ エンジンでこれを実行しようとしています。

0 投票する
2 に答える
15768 参照

django - レンダリング中の NoReverseMatch: ''django.contrib.auth.views.login'' の逆

Django の認証を使用していますが、login.html テンプレートで次のステートメントを実行するとエラーが発生します。

/login での TemplateSyntaxError

レンダリング中に NoReverseMatch をキャッチしました: 引数 '()' とキーワード引数 '{}' を持つ ''django.contrib.auth.views.login'' のリバースが見つかりません。

この URL は私の urls.py で定義されています:

認証システムをインストールしました:

何か案は?

0 投票する
4 に答える
863 参照

python - Django に複数のプロファイルがありますか?

複数のプロファイルで Django のユーザー認証機能を使用することは可能ですか?

現在、これを含む settings.py ファイルがあります。

そして、これを含む models.py ファイル:

そうすれば、ユーザーがログインすると、ユーザーには get_profile() メソッドがあるため、プロファイルを簡単に取得できます。ただし、UserProfileB を追加したいと思います。少し調べてみると、AUTH_PROFILE_MODULE として使用するスーパークラスを作成し、UserProfileA と UserProfileB の両方をそのスーパークラスから継承させることが出発点のようです。問題は、get_profile() メソッドが正しいプロファイルを返すとは思わないことです。スーパークラスのインスタンスを返します。私はJavaのバックグラウンド(ポリモーフィズム)から来ているので、何をすべきか正確にはわかりません。

ありがとう!

編集:

このサイトhttp://djangosnippets.org/snippets/1031/で見つけた「継承ハック」と呼ばれるものを介してそれを行う方法を見つけました

それは非常にうまく機能しますが、このようなことが自動的に行われるJavaのバックグラウンドから来て、誰かがこれをコード化してPythonでそれを行うために「ハック」と呼ばなければならなかったという事実に少し不安です. Pythonがこれを有効にしない理由はありますか?

0 投票する
5 に答える
35255 参照

python - Django - 特定のビューに対するユーザー権限?

管理者から、モデルからのデータの追加、変更、または削除を許可する権限をユーザーまたはユーザーグループに割り当てることができることがわかりました。

これは素晴らしいことですが、ユーザーまたはユーザー グループがビューのグループにアクセスできるようにするか、ビューのグループにアクセスできないようにする必要もあります。Web サイトに特定の種類のサービスがあるため、一部のユーザーが特定のサービス (ページ/ビュー) にアクセスできるようにし、他のユーザーはアクセスできないようにしたいと考えています。

では、特定のユーザー/ユーザー グループが特定のビューにアクセスできるようにするにはどうすればよいでしょうか? ありがとうございました!

0 投票する
1 に答える
722 参照

django - Djangoの非常に別々のデータベースにまたがる「外部キー」

2つの異なるデータベースを使用するDjangoサイトを作成しました。1つはローカルで、これを「Django」と呼びましょう。これは、かなり標準的なインストールからのすべての標準テーブル(認証、サイト、コメントなど)に加えて、いくつかの追加テーブルを格納するデータベースです。

ユーザーを含むほとんどのデータは、別のサーバー上のデータベースから取得されます。これを「レガシー」データベースと呼びましょう。

特にユーザーに関して、2つのデータベースを接続するためのクリーンでPythonの方法に関する提案を探しています。

プロキシモデルを使用しています。これは明示的に使用できる場合はうまく機能しますが、関連オブジェクトとしてユーザーオブジェクトにアクセスしている場合(たとえば、組み込みのdjangoコメントシステムを使用している場合)に問題が発生します。

コードは次のようになります。

models.py :( Djangoデータベースを指す)

legend_models.py :(「レガシー」データベースを指す)

自分のミドルウェアも作成したのでrequest.user、プロキシUserオブジェクトも作成しました。

本当の問題は、関連オブジェクトとしてユーザーがいるものを使用している場合、特に制御がさらに少ないテンプレートで使用している場合です。

テンプレート内:

代わりにプロキシユーザーモデルを使用するコメントシステムのラップバージョンを作成する以外に、他にできることはありますか?

0 投票する
2 に答える
27601 参照

django - djangoフォームを使用したログインページ

私はpythonとdjangoの初心者です...djangoフォーム(forms.py)を使用してログインフォームを作成する方法を知りたいです