Как сравнить поля, взятые через форму, с полями модели, созданной в django? - PullRequest
0 голосов
/ 15 апреля 2020

Я создал модель Customer в моих моделях и зарегистрировал ее на admin.py. Затем я создал форму входа в систему и взял значения полей с помощью метода get. Теперь я хочу перебрать все созданные объекты клиента и найти объект с этими двумя совпадающими полями. Я создал функцию входа в файл views.py. Это моя модель: класс Customer (models.Model):

FirstName = models.CharField(max_length=100, default="")
LastName = models.CharField(max_length=100, default="")
address = models.CharField(max_length=500, default="")
EmailId = models.CharField(max_length=120, default="")
PhoneNo = models.CharField(max_length=12, default="")
Password = models.CharField(max_length=120, default="")

И это моя функция: def login (request):

if request.method=="POST":
    FirstName= request.POST.get('FirstName', '')
    Password = request.POST.get('Password', '')
    for customer in Customer.objects.all():
        if  FirstName==customer.FirstName and Password==customer.Password:
            return redirect ( 'customer-home')
return render(request, 'customer/login.html')

Я не получаю желаемого результаты.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Создайте файл form.py с импортированными в него django формами, как это было бы полезно.

forms.py


from django.forms import ModelForm
from .models import *
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.forms import User
from django import forms

class CreateUserForm(UserCreationForm):
    class Meta:
        model=User
        fields=['Firstname','Lastname','EmailId','Address',Password','PhoneNo']

Затем в представлениях добавьте

from .forms import *
 def login(request):
        if request.method == 'POST':

        username = request.POST.get('username')
        password =request.POST.get('password')

        customer = authenticate(request, username=username, password=password)

        if customer is not None:

            login(request, customer)
            return redirect('/')
        else:
            messages.info(request, 'Username OR password is incorrect')
        return render(request, 'customer/login.html')    

Надеюсь, у вас есть сделал страницу регистрации так, как это необходимо для аутентификации. Скажите, если вам нужна помощь в этом

0 голосов
/ 15 апреля 2020

Я предлагаю вместо использования for l oop проверять каждый объект, который вы можете использовать проверку Queryset (https://docs.djangoproject.com/en/3.0/ref/models/querysets/), предоставленную Django, как показано ниже

customer = Customer.objects.get(firstname=firstname, password=password)
if customer is not None:
  redirect ( 'customer-home')
...