Проверка пароля перед доступом к содержимому в 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', {})