发布表单之前如何检查表单字段值-Django

时间:2019-08-14 16:29:32

标签: python django

我有一个当前可以很好地工作的表单,除了用户可以在表单字段之一中输入他们想要的任何值。我想首先在用户实际提交表单之前,在用户按下“提交”按钮时检查该字段的值。

在views.py中,我认为最好的位置在哪里?

我的目标是检查用户输入的function PrintElem() { Popup($html); } function Popup(data) { var myWindow = window.open('', 'Receipt', 'height=400,width=600'); myWindow.document.write('<html><head><title>Receipt</title>'); /*optional stylesheet*/ //myWindow.document.write('<link rel="stylesheet" href="main.css" type="text/css" />'); myWindow.document.write('<style type="text/css"> *, html {margin:0;padding:0;} </style>'); myWindow.document.write('</head><body>'); myWindow.document.write(data); myWindow.document.write('</body></html>'); myWindow.document.close(); // necessary for IE >= 10 myWindow.onload=function(){ // necessary if the div contain images myWindow.focus(); // necessary for IE >= 10 myWindow.print(); myWindow.close(); }; } 值,并确保他们输入的值存在于customerTag模型字段中。

对于我的CustomerTag,我目前有:

views.py

def usersignup(request): if request.method == 'POST': form = CustomUserCreationForm(request.POST) if form.is_valid(): user = form.save(commit=False) user.is_active = False user.save() current_site = get_current_site(request) email_subject = 'Activate Your Account' message = render_to_string('activate_account.html', { 'user': user, 'domain': '127.0.0.1:8000', 'uid': urlsafe_base64_encode(force_bytes(user.pk)).decode(), 'token': account_activation_token.make_token(user), }) to_email = form.cleaned_data.get('email') send_mail(email_subject, message, 'example@example.com', [to_email,], fail_silently=False) return render(request, 'confirm.html',) else: form = CustomUserCreationForm() return render(request, 'signup.html', {'form': form}) 我有:

forms.py

上面的代码有效,但是允许用户将他们喜欢的任何内容输入到class CustomUserCreationForm(UserCreationForm): def __init__(self, *args, **kwargs):# for ensuring fields are not left empty super(CustomUserCreationForm, self).__init__(*args, **kwargs) self.fields['email'].required = True self.fields['first_name'].required = True self.fields['customerTag'].required = True class Meta(UserCreationForm.Meta): model = CustomUser fields = ('username', 'first_name', 'last_name', 'email', 'customerTag',) labels = { 'customerTag': ('Customer ID'), } help_texts = { 'customerTag': ('Please contact Support if you do not have your customer ID'), } 中。我想我需要做些类似的事情:

customerTag

这是正确的方向吗?如果是这样,获得用户输入到表单中的值的最佳方法是什么?

我发现的其他一些帖子中使用的是javascript检查表单,如果可能的话,我宁愿使用python。

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法在视图中访问customerTag值:

customerTag = request.POST.get('customerTag')

,然后检查它是否存在于数据库中

# we retrieved customerTag in the code above sample so we pass it to filter params
match = CustomUser.objects.filter(customerTag=customerTag).exists()

# and then continue with the stuff u wanted
if match:
     #submit form

但是如果您在用户点击提交表单之前在表单输入上进行ajax调用,则会为您的网站带来更好的用户体验