Django 使字段可选,通过完整性检查
Django make field optional that gets check by integrity
我想在我的注册页面上设置一个可选字段,这样只有当用户提供了这些信息时才会检查该字段的内容,如果没有,只需跳过数据完整性检查:
pubpgp = PGPKey.from_blob(request.POST['pubpgp'].rstrip("\r\n"))[0]
pub 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)
提前致谢
如果未提供 pubpgp
参数,或者如果提供并指示正确的算法,您希望重定向到 login
视图,那么这应该只涉及一个小调整条件语句:
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)
我想在我的注册页面上设置一个可选字段,这样只有当用户提供了这些信息时才会检查该字段的内容,如果没有,只需跳过数据完整性检查:
pubpgp = PGPKey.from_blob(request.POST['pubpgp'].rstrip("\r\n"))[0]
pub 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)
提前致谢
如果未提供 pubpgp
参数,或者如果提供并指示正确的算法,您希望重定向到 login
视图,那么这应该只涉及一个小调整条件语句:
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)