PythonとDjangoでWebアプリを作っていますが、Djangoでのフォームからの値取得と、その値をデータベースに格納されている値と比較する処理がうまくいかずハマっています。
たぶん、基本的なことではないかとは思うのですが、調べても解決できなかったので質問させてください。
フォームからdoctor_idとpasswordを取得して、取得したdoctor_idからデータベースに格納されているDoctorテーブルのdoctor_passwordを取得して、フォームからのpasswordと一致しているかどうかを比較する処理です。
アドバイスをいただけると幸いです。
よろしくお願いいたします。
model.py
class Doctor(models.Model): doctor_id = models.CharField(max_length=16, primary_key=True) clinic_id = models.ForeignKey(Clinic) doctor_email = models.CharField(max_length=64) doctor_password = models.CharField(max_length=32) doctor_name = models.CharField(max_length=32) create_date = models.DateTimeField(auto_now_add=True) modify_date = models.DateTimeField(auto_now=True)
form.py
from django import forms from .models import Doctor class LoginForm(forms.Form): # userid = forms.CharField() # password = forms.CharField() class Meta: model = Doctor fields = ('doctor_id', 'doctor_password',)
views.py
from django.shortcuts import get_object_or_404, render from django.http import HttpResponse from django.shortcuts import render # from django.contrib.auth import authenticate, login from django.contrib.auth.decorators import login_required # from django.views.decorators.csrf import ensure_csrf_cookie from .forms import LoginForm from .models import Doctor # @ensure_csrf_cookie def user_login(request): if request.method == 'POST': form = LoginForm(request.POST) if form.is_valid(): # _id = id_username # _password = id_password # question = get_object_or_404(Doctor,) # question.choice_set.get(pk=request.POST['userid']) # _id = request.username # _password = request.password # # cd = form.cleaned_data # user = authenticate(username=cd['username'], password=cd['password']) _id = form.cleaned_data['doctor_id'] _password = form.cleaned_data['doctor_password'] # doctor_password = Doctor.doctor_password.get(doctor_id=_id) b = Doctor.objects.all().filter(doctor_id=_id) print (doctor_password) if _password is doctor_password: # if user.is_active: login(request, user) return HttpResponse('Authenticated successfully') # else: # return HttpResponse('Disabled account') else: return HttpResponse('Invalid login') else: form = LoginForm() return render(request, 'apiv1/login.html', {'form': form})
login.html
{% extends "base.html" %} {% load staticfiles%} {% block title%}りもしん クリニック様システムログイン画面{% endblock %} {% block remoshincss %}/static/css/style.css{% endblock %} {% block content %} <div class="container"> <div align="center" class="imgtop"><img id="profile-img" class="profile-img-card" src="/static/img/remoshinlogo.png" /></div> <div class="card card-container"> <p id="profile-name" class="profile-name-card"></p> <form class="form-signin" action="{% url 'login' %}" method="post">{% csrf_token %} <!-- <span id="reauth-email" class="reauth-email"></span> --> <input type="user" id="userid" name="userid" class="form-control inputUser" placeholder="ユーザーID" autofocus> <input type="password" id="password" name="password" class="form-control inputPassword" placeholder="パスワード"> <input type="hidden" name="next" value="{{ next }}" /> <div class="this" align="center">パスワードをお忘れの方は<a href="password.html">こちら</a></div> <br> <div align="center"><button style="width: 200px;" class="btn btn-lg btn-primary btn-block btn-signin" type="submit"><font color="#708090">ログイン</font></button></div> </form> </div> </div> {% endblock %}
回答1件
あなたの回答
tips
プレビュー