Django делает поле необязательным, которое проверяется целостностью - PullRequest
0 голосов
/ 15 января 2019

Я хочу сделать поле на моей странице регистрации необязательным, чтобы содержимое этого поля проверялось только в том случае, если пользователь предоставил эту информацию, если нет, просто пропустите проверку целостности данных:

pubpgp = PGPKey.from_blob (request.POST ['pubpgp']. Rstrip ("\ r \ n")) [0]

поля паб pgp. Но я не знаю, как этого добиться, любая помощь приветствуется.

models.py

pubpgp = models.TextField(verbose_name='Public RSA PGP Key - (ASCII-Armored)', blank=True, default='', max_length=3000)

views.py

def signup(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            pubpgp = PGPKey.from_blob(request.POST['pubpgp'].rstrip("\r\n"))[0]
            if pubpgp.key_algorithm == PubKeyAlgorithm.RSAEncryptOrSign:
                form.save()
                messages.add_message(request, messages.INFO, "Thanks for you Registration, you are now able to login.")
                return redirect(reverse('login'))
            else:
                messages.add_message(request, messages.INFO, "Only RSA based PGP keys are allowed.")
        else:
            return render(request, 'signup.html', {'form': form})
    else:
        form = RegistrationForm()
        args = {'form': form}
        return render(request, 'signup.html', args)

заранее спасибо

1 Ответ

0 голосов
/ 16 января 2019

Поскольку вы хотите перенаправить в представление login, если параметр pubpgp не указан или если он указан и указывает на правильный алгоритм, то для этого нужно просто внести небольшую поправку в условный оператор:

def signup(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            pubpgp = request.POST.get('pubpgp')
            # Allow redirect if pubpgp is empty or not empty but correct algorithm
            if not pubpgp or PGPKey.from_blob(pubpgp.rstrip("\r\n"))[0].key_algorithm == PubKeyAlgorithm.RSAEncryptOrSign:
                form.save()
                messages.add_message(request, messages.INFO, "Thanks for you Registration, you are now able to login.")
                return redirect(reverse('login'))
            else:
                messages.add_message(request, messages.INFO, "Only RSA based PGP keys are allowed.")
        else:
            return render(request, 'signup.html', {'form': form})
    else:
        form = RegistrationForm()
        args = {'form': form}
        return render(request, 'signup.html', args)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...