我正在制作一个网页,例如在餐厅订购食物。因此,我附上了一份表格,客户必须填写表格,其中包括姓名,桌号,密码等才能订购食物。为此,我想制作一个装饰器,以便客户无需填写表格即可直接转到另一页。
from django import forms
from order.models import LoginModel
from django.core import validators
from django.core.validators import MinValueValidator,MaxValueValidator
def check_password(value):
if value != 'onetofour':
raise forms.ValidationError("Invalid Password")
class LoginForm(forms.ModelForm):
username = forms.CharField(max_length=128)
Table_number = forms.IntegerField(validators=[MinValueValidator(1),MaxValueValidator(4)])
password = forms.CharField(widget = forms.PasswordInput,validators[check_password,])
class Meta:
model = LoginModel
fields = '__all__'
在提交表单的视图中,您可以访问会话并将form_submitted
设置为True
,例如
request.session['form_submitted'] = True
然后创建一个装饰器,例如
def check_form_submitted(func):
def wrap(request, *args, **kwargs):
if not request.session.get('form_submitted'):
# raise 404 ?
return func(request, *args, **kwargs)
return wrap
并将此修饰器添加到视图中,您必须在其中验证用户是否已提交表单。