【发布时间】:2019-06-09 20:56:34
【问题描述】:
我想在我的注册页面上设置一个可选字段,这样只有在用户提供了这些信息时才会检查该字段的内容,如果没有,只需跳过数据完整性检查:
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视图? -
是的!正是,感谢阅读
-
我注意到的一件事是,在执行
if pubpgp.key_algorithm == PubKeyAlgorithm.RSAEncryptOrSign:的 else 之后,没有 return 语句可以呈现该消息。现在对于您的问题,代码看起来很正确。您能否详细说明how to accomplishes this?你得到的错误是什么?如果是关于 pubpgp 需要,可以尝试将null=True加到pubpgp = models.TextField(verbose_name='Public RSA PGP Key - (ASCII-Armored)', blank=True, default='', max_length=3000)。我认为null和blank通常是齐头并进的。