Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用django ModelForm对象和Queryset执行登录身份验证功能_Python_Django_Http Post - Fatal编程技术网

Python 如何使用django ModelForm对象和Queryset执行登录身份验证功能

Python 如何使用django ModelForm对象和Queryset执行登录身份验证功能,python,django,http-post,Python,Django,Http Post,我下面的问题是关于如何开发一个函数来比较请求后数据(ModelForm)和queryset中模型的现有数据 这是mi models.py: class Employee(models.Model): dni = models.CharField(max_length=9, null=False, blank=False, default="12345678R") name = models.CharField(max_length=7) surname = models.

我下面的问题是关于如何开发一个函数来比较请求后数据(
ModelForm
)和
queryset
中模型的现有数据

这是mi models.py:

class Employee(models.Model):
    dni = models.CharField(max_length=9, null=False, blank=False, default="12345678R")
    name = models.CharField(max_length=7)
    surname = models.CharField(max_length=8)
    email = models.CharField(max_length=20)
    telefone_number = models.IntegerField()
    user_nick = models.CharField(max_length=10, null=False, blank=False, default="user")
    password = models.CharField(max_length=20, null=False, blank=False, default="password")
    ticket = models.ManyToManyField(Ticket)
forms.py(EmployerLoginForm仅适用于
用户_nick
密码
):

在本例中,为了开发登录功能,我使用views.py中的
EmployerLoginForm

_logger = nexus_services_logs.Logging(statics.NEXUS_VIEWS_LOGGING_NAME)
_views_manager_service = nexus_services_views_manager.ViewsManagerService()
_auth = nexus_services_auth.Authentication()

class IndexView(View):

    def post(self, request, *args, **kwargs):
        form = EmployerLoginForm(request.POST)
        if(_auth.check_model_employer_authentication(form, _logger, _views_manager_service)):
            if(_views_manager_service.validate_form(form, _logger)):
                _views_manager_service.save_form(form, _logger)
            return redirect('employerPortal')
        else:
            return redirect('index')
check\u model\u employer\u authentication(表单、\u logger、\u views\u manager\u service)
是我想要比较表单数据和查询集的功能。当我无法使用for循环比较对象时(在
auth.py
中),我发现了问题:


我尝试过使用上下文,但不起作用。

什么不起作用?你是否面临任何错误。回溯在哪里?在if语句的行中是:if(employer.user\u nick==model.user\u nick和employer.password==model.password)。我认为这是因为表单对象无法获取用户身份和密码。什么不起作用?你是否面临任何错误。回溯在哪里?在if语句的行中是:if(employer.user\u nick==model.user\u nick和employer.password==model.password)。我认为这是因为表单对象无法获取用户身份和密码。
_logger = nexus_services_logs.Logging(statics.NEXUS_VIEWS_LOGGING_NAME)
_views_manager_service = nexus_services_views_manager.ViewsManagerService()
_auth = nexus_services_auth.Authentication()

class IndexView(View):

    def post(self, request, *args, **kwargs):
        form = EmployerLoginForm(request.POST)
        if(_auth.check_model_employer_authentication(form, _logger, _views_manager_service)):
            if(_views_manager_service.validate_form(form, _logger)):
                _views_manager_service.save_form(form, _logger)
            return redirect('employerPortal')
        else:
            return redirect('index')
class Authentication():

    def __init__(self):
        self.employer_exist = False

    def check_model_employer_authentication(self, model, logger, views_manager_service):
        queryset_all_employers = Employee.objects.order_by("id")
        context_exployers = views_manager_service.build_context_queryset_employers(queryset_all_employers) 
        for employer in context_exployers["employers"]:
            if(employer.user_nick == model.user_nick and employer.password == model.password):
                self.employer_exist = True
                logger.info_log("Exist nick with similar password")
                return True
            else:
                logger.error_log("Nick or password not exist or coincidence with object in db")
                return False