关于创建Django表单Forms继承BaseForm的问题
2024-08-27 03:10:56
在创建Django表单时,因为需要验证用户输入的验证码是否正确,因此需要在session里提取当前验证码的值和POST提交过来的值进行比对,如图:
form.py from django import forms class LoginForms(forms.Form):
check_code = forms.CharField()
def clean_check_code(self):
if self.request.session.get('CheckCode').upper() !=
self.request.POST.get('check_code').upper():
raise ValidationError(message='验证码错误', code='invalid')
但是这样会引发一个AttributeError错误
因为这时的"self.request.session.get('CheckCode')"中的"self.request"指代的是表单forms(我猜的。。。),所以要继承个类BaseForm,然后在BaseForm写上
class BaseForm(object):
def __init__(self, request, *args, **kwargs):
self.request = request
super(BaseForm, self).__init__(*args, **kwargs)
原来代码改为:
class LoginForms(BaseForm,forms.Form):
check_code = forms.CharField() def clean_check_code(self):
if self.request.session.get('CheckCode').upper() != self.request.POST.get('check_code').upper():
raise ValidationError(message='验证码错误', code='invalid')
然后在view.py上改为:
from ..forms.account import LoginForms def login(request):
if request.method == 'GET':
return render(request, 'login.html') elif request.method == 'POST':
obj = LoginForms(request = request, data = request.POST)
....
最新文章
- Bringing Whoops Back to Laravel 5
- [LeetCode] Two Sum 两数之和
- ActiveMQ初体验(转)
- iava多线程详解(2)-成员变量与局部变量访问
- CloudStack4.4安装 ubuntu14.04
- Openstack Neutron 允许VM流量转发
- NGUI 滑动页(UIToggle和UIToggledObjects)
- js 获取系统当前时间
- python 操作 excel
- BeanUtils框架浅析
- js中new构造函数的研究
- linux高级技巧:rsync同步(一个)
- [转]shell awk 入门,中级,高级使用
- python 字典详解
- windows 安装memchched和memcache教程
- JavaSSM框架面试
- python day10 函数(第二篇)
- JavaScript隐藏的坑一,隐式调用toString
- YUICompressor的安装及使用(一)
- js基础回顾
热门文章
- LeetCode 206. 反转链表(Reverse Linked List) 16
- 027 Android 可扩展的listview:ExpandableListView的使用案例
- [转帖]什么是UWB?UWB有什么用?
- springboot调用mongo
- Itemchanged事件
- 玩转【Mock.js】,前端也能跑的很溜
- C# 不是序列化xml 转实体Model【原家独创】
- Spring/Spring Boot整合Weblogic JMS实战
- Go net/http 发送常见的 http 请求
- Jlink调试S5PV210