Проверка пароля перед доступом к содержимому в django

Я пытаюсь создать функциональность, в которой пользователи должны вводить пароль для доступа к сайту.

Если вы перейдете на этот сайт, он запросит пароль (123), прежде чем показать вам содержимое: https://www.protectedtext.com/djangoproj

Я хочу сделать это без forms.py.

URL OF THE PAGE --> TEMPLATE --> ASK FOR PASSCODE --> SHOW CONTENT IF PASSCODE MATCHES

models.py

from django.db import models

# Create your models here.

class Text(models.Model):
    text = models.TextField(blank=True)
    slug = models.SlugField(unique=True)
    password = models.CharField(max_length=50)

    def __str__(self):
        return self.slug

views.py

from django.shortcuts import render
from .models import Text
import django.contrib.auth
# Create your views here.

def textview(request, slug):
    obj= Text.objects.get(slug=slug)
    return render(request, 'text/textpage.html', {'obj' : obj})

def home(request):
    return render(request, 'text/index.html', {})

Я пробовал создать новый шаблон для пароля, но я все еще не получаю эту функциональность. Заранее спасибо

На вашем месте (и не желая использовать DRF), я бы сделал что-то вроде этого:

def check_password(*args, **kwargs): # decorator function for checking password
    def wrapper(func):
        if kwargs.get('password', None) == '123':
            func() # show index, if password is corrent
        else:
            raise Exception('Access denied') # else raise the exception
    return wrapper

def home(request):
    try:
        password = request.GET.get('password') # get password from given parameters
        @check_password(password)
        def show_index():
            return render(request, 'text/index.html', {})
    except:
        print('Password was not given or it is incorrect, access denied')
        return render(request, 'text/401.html', {})
Вернуться на верх