DjangoにAJAXログインフォームを作成しようとしています。これは、ユーザーが正しいusername
とpassword
を入力したかどうかを確認する必要があります。ここに私のコードは今ある:Django AJAXログインフォームの検証
urls.py
urlpatterns = [
url(r'^$', views.boxes_view, name='news'),
url(r'^user_login/', views.user_login, name='user_login'),
]
forms.py
class UserLoginForm(forms.Form):
username = forms.CharField(max_length=25)
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = [
'username',
'password',
]
base.html
<form method="post" enctype="multipart/form-data" action="{% url 'user_login' %}" class="form_login">{% csrf_token %}
<div class="loginWrapper">
<div class="login">
<div class="loginBox">
{{ form_login.username|placeholder:"username"|add_class:"login_username" }}
{{ form_login.password|placeholder:"password"|add_class:"login_password" }}
<input type="submit" value="login"/>
</div>
</div>
</div>
</form>
これは私のjQuery関数です。入力したusername
とpassword
をコンソールに正常に記録します。
base.js
$('.form_login').on('submit', function(e) {
$.ajax({
type: 'POST',
url: 'http://127.0.0.1:8000/user_login/',
data: {'username': $('.login_username').val(),
'password': $('.login_password').val()},
success: function (data) {
console.log(data)
}
}
)
})
は、どのように私は私のviews.pyにjQueryの関数からdata
を得るのですか?ここに私の現在のビューは、ユーザーをログに正常に動作しますが、間違った資格情報が入力されたとにかくフォームを提出するので、AJAXを実装して、これが発生した場合には、
views.py
def user_login(request):
form_login = UserLoginForm(request.POST or None)
if form_login.is_valid():
username = form_login.cleaned_data['username']
password = form_login.cleaned_data['password']
user = authenticate(username=username, password=password)
if user is not None and user.is_active:
login(request, user)
else:
pass
else:
print(form_login.errors)
print(form_login.non_field_errors)
form_login = UserLoginForm()
return redirect('/')
そしてどのように私は私のviews.pyにjQueryのデータを認証しますか?
あなたは私の答えを試しましたか? – e4c5
私の認証システムをAllauthに変更する過程で、あなたが言ったように。私はまだAJAXの部分に行っていない理由は、abitのトラブルを抱えている。問題は、Allauthが使用するURL(/ accounts/login)ではなく、自分のurl(base.html)にログインフォームを拡張しようとしていることです。 – Zorgan