Django 表单验证和错误提示找不到解决方法,django错误提示,我想用Django的fo
Django 表单验证和错误提示找不到解决方法,django错误提示,我想用Django的fo
我想用Django的form实现一个简单的用户注册功能,目前完成的界面如下:
我想完善的功能是当用户输入内容有误时,点击注册之后会在相应字段后面出现一个错误提示,就像Segmentfault的登录一样,密码错误下面会有简单的提示,如下:
我的部分代码如下,
forms.py
class SignupForm(forms.Form): username = forms.CahrField( label=_("username"), max_length=30, ) email = forms.EmailField(label=_('email'),) password_1 = forms.CharField( label=_("password"), widget=forms.PasswordInput, ) password_2 = forms.CharField( label=_("password_confirmed"), widget=forms.PasswordInput, ) def clean_password_2(self): password_1 = self.cleaned_data.get("password_1") password_2 = self.cleaned_data.get("password_2") if password_1 and password_2 and password_1 != password_2: raise forms.ValidationError(_('password confirm failed')) return password_2
signup.html
<form method="post" action="{% url 'accounts:signup_post' %}"> {% csrf_token %} <table> {% for field in form %} <tr> <td>{{ field.label_tag }}</td> <td>{{ field }}</td> <td>{{ field.errors }}</td> </tr> {% endfor %} </table> <input type='submit' id="submit" value={% trans "signup" %}> <a href="{% url 'accounts:login' %}">{% trans "Already have accounts?" %}</a></form>
views.py
def signup_post(request): if request.method == 'POST': signup_form = forms.SignupForm(request.POST) if signup_form.is_valid(): signup_info = signup_form.cleaned_data username = signup_info['username'] email = signup_info['email'] password = signup_info['password_1'] user = User.objects.create_user( username=username, email=email, password=password) user.save() # 重定向到首页(暂时没写) else: # 估计是这里的问题,但不知道怎么改正 return redirect(reverse("accounts:signup")) else: signup_form = forms.SignupForm() return render(reverse("accounts:signup"), {'form': signup_form})
目前只是想简单验证两次输入密码是否一致,参考文档写了 clean_ 函数,但是没有成功。我猜测是views 中 signup_form.is_valid() 失败之后返回页面时需要带上form,但是不知道怎么做。
已经读了Django文档中Form部分的内容,但是仍旧找不到解决方法。
已解决。
可以看
django form field validation and error display 和 django TemplateDoesNotExist
lz可以参考这篇文章,变通实现这个功能
http://muilpin.blog.163.com/blog/static/165382936201221910158809/
ajax提交到后台,通过获取form.name.errors来确定name字段是否错误
编橙之家文章,
相关内容
- 求python隐藏真实IP不被服务器检测到的方法,pythonip,需
- Django返回的pdf文件不能被其它机器使用是为什么?,dj
- Flask不用渲染模板如何做到直接输出html文件呢,,(我是
- python class 类的问题,pythonclass问题,class C:
- Python离线部署安装包问题,python离线安装包,在本地开发
- Python终端上传错误提示:Server response (403)原因是?,py
- python try可以使用多次吗?,pythontry可以使用,try: do
- Python类 对象 函数后面的参数问题 学到后面更难学怎么
- Python pyqt能直接拖控件的开发界面程序吗?,pythonpyqt,在
- Python方法sax解析多个子节点xml格式如何处理,pythonsax
评论关闭