Python 密码保护页面django

Python 密码保护页面django,python,django,Python,Django,我想为法官创建一个注册页面,但我想确保在进入注册页面之前,您必须输入密码,每个法官都将拥有我提供给他们的相同密码,他需要一个带有一个窗口的简单页面来输入我之前给出的密码。如果有人能告诉我如何创建这样一个模型,然后是它的形式,或者如果有任何其他更简单的方法,我将非常感谢任何提示 class PasswordJudges(models.Model): password = models.CharField(max_length = 11) def __str__(self):

我想为法官创建一个注册页面,但我想确保在进入注册页面之前,您必须输入密码,每个法官都将拥有我提供给他们的相同密码,他需要一个带有一个窗口的简单页面来输入我之前给出的密码。如果有人能告诉我如何创建这样一个模型,然后是它的形式,或者如果有任何其他更简单的方法,我将非常感谢任何提示

class PasswordJudges(models.Model):
    password = models.CharField(max_length = 11)

    def __str__(self):
        return self.password

但考虑到我什么都没有,因为我写的所有东西都错了://

为了清楚起见,我决定把这个作为一个完整的答案。您可以执行以下操作:

In views.py

from django.shortcuts import redirect, render
from .forms import JudgesForm
from .models import JudgeDetail

def home_view(request):
    # Initiate your form
    judge_form = JudgesForm(request.POST or None)

    # Initiate your session variable
    request.session['judge_password'] = 'invalid'

    if (request.method == 'POST'):
        if judge_form.is_valid():
            user = judge_form.cleaned_data['user']
            password = judge_form.cleaned_data['password']

            try:
                # get the actual password info from the database
                user_object = JudgeDetail.objects.filter(username=user).get()
                actual_pw = user_object.password
                if (actual_pw == password):
                    request.session['judge_password'] = 'valid'
                    return redirect('judge_view')
                else:
                    return redirect('home_view')
            except:
                # handle exceptions here

    home_context = {
    # put context stuff here
    }

    return render(request, "home.html", home_context)

def judge_view(request):
    if (request.session['judge_password'] != 'valid'):
        return redirect('home_view')

    # ...

    judge_context = {
    # ...
    }

    return render(request, "judge.html", judge_context)

在models.py中

from django.db import models

class JudgeDetail(models.Model):
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
在forms.py中

from django import forms
from .models import JudgeDetail

class JudgesForm(forms.ModelForm):
    class Meta:
        model = JudgeDetail
        widgets = {
        'password': forms.PasswordInput(),
    }


可选:您可能希望在数据库中为用户存储哈希版本的密码,而不是存储实际密码,这样具有管理员权限的人就看不到每个人的密码。如果您这样做,只需在存储或比较密码之前执行
password=hash_函数(password)
,其中
hash_函数()
是您选择使用的任何哈希函数。

您可以显示一些现有代码吗?然后,我们可以帮助您展示在哪里可以改进和修复任何错误!作为一个指针,看看如何使用,当密码正确时,您可以使用会话来存储一个值,以显示用户提供了正确的密码。在提供受限页面之前,请检查会话。@GTBebbo我有类似的内容,我同意@GTBebbo关于会话的看法。从
views.py
中的表单获取密码。(如果
request.method==POST
,则检查表单类型(如果使用多个表单),然后检查表单是否有效)。然后,检查密码的表单输入是否与数据库中存储的正确密码匹配(或对应于正确密码的哈希)。如果正确,则创建一个会话变量,指示他们可以查看“法官”页面,重定向到该页面,并在加载该页面时,检查该会话变量以查看他们是否使用了正确的会话password@bug_spray我还有一个问题,我可以从模型中获取这个单字段吗,只需要设置密码?
from django import forms
from .models import JudgeDetail

class JudgesForm(forms.ModelForm):
    class Meta:
        model = JudgeDetail
        widgets = {
        'password': forms.PasswordInput(),
    }