これは誰かにとって簡単な質問です。私はかなりの周りを検索し、これを完全に解決するスレッドがある場合は、私に指示してこれを閉じてください。私は、Djangoを使用して、私たちの組織のウェブサイト内に非常に単純なWebフォームを構築しています。 forms.pyでは、私は、ログインページのためのクラスをDjangoログインフォームからユーザー名を渡すには?
を持っている:
class userLogin(forms.Form):
user = forms.CharField(label = 'Username ', max_length = 25)
pwd = forms.CharField(label = 'Password ', widget = forms.PasswordInput)
def clean(self):
cleaned_data = super(userLogin, self).clean()
user = cleaned_data.get("user")
pwd = cleaned_data.get("pwd")
if not fs.authenticateUser(user, pwd):
raise forms.ValidationError("Invalid password!")
私はfs.authenticateビットがあるものについてである私達のウェブサイトのAPI、に対して認証する必要があります。 TrueまたはFalseを返します。 views.pyでは、私はこれを行う:
if request.method == 'POST':
user_form = userLogin(data = request.POST)
if user_form.is_valid():
return redirect('PickupAuthorization/main')
else:
pass
メインページへの認証とリダイレクトが見事に機能し、ログインフォームは、クレデンシャルが正しくないと、期待どおり無効なパスワードメッセージをスローします。私が知りたいのは、 "users"をviews.pyで利用できるようにする方法です。ビューでuser_form.userを参照しようとすると、userはuserLoginの属性ではないことがPythonから通知されます。
私はOOPであまり仕事をしていないので、これは簡単な答えがあると思いますが、私はそれを見つけることができません。ありがとう!
編集:私は、このプロジェクトをすぐに棚上げしなければなりませんでしたが、もっと重要なことに賛成する必要がありましたが、適切に機能するソリューションがあればそれを更新します。
ホイールを再発明する必要はありません。https://docs.djangoproject.com/en/1.10/topics/auth/customizing/ – Wtower
私はこれを見て、私はそれを理解します。ここでAUTHENTICATION_BACKENDSの設定について説明します。しかし、それは私がサードパーティのAPIを使用しているので、私は自分の認証バックエンドを書くことについて議論しています。しかし、私はUserオブジェクトを返す方法については不明です。私がhttps://docs.djangoproject.com/en/1.10/topics/auth/default/#user-objectsの文書を正しく読んでいるなら、 'django.contrib.authからのようなものをする必要があります。モデルをインポートするUser'、次に 'user = User.objects.create_user' - 認証されたユーザ名を利用する、そう? –