django 将view视图中的对象传入forms表单验证模块中

最近在写一个用户详情表单验证模块时出现了一个问题。我想通过forms表单这个模块,实现前端的表格渲染,(如果有值带值渲染到表格中,如果没有值就渲染为空白),并且可以在提交表格后获得forms模块的表单校验功能。这里就出现一个问题了。。如果有值就带值渲染到页面,这个可以用js或jq来实现。很简单。但是,例如在定义model时有个别的字段是定义为唯一的unique,那么问题来了。如果将当前表再次提交的话,forms验证组件会反馈错误信息,提示该内容已存在了。那么这时候就需要引入一些条件将自己提交的排出(也就是说除自己以外的数据做比较)。

有了这个思路,就要解决如果将forms外部的对象引入到forms中作为field。感觉写这个问题的文章好少,都很麻烦,而且看了以后蒙圈,其实就是那么一回事。。

首先:要让forms可以接收参数。

在form.py中

class PSUserForm(forms.Form):
    def __init__(self, *args, **kwargs):
        this_user = kwargs.pop(‘this_user‘, None)
        super(PSUserForm, self).__init__(*args, **kwargs)
        self.user = this_user
  telephone = forms.CharField(max_length=11,
                            error_messages={‘required‘: "该字段不能为空!"},
                            widget=widgets.TextInput(attrs={"class": "form-control"}), label=‘电话号码‘)
  
  clean_telephone(self):
      telephone = self.cleaned_data.get(‘telephone‘)
      telephone_obj = UserDetail.objects.exclude(pk=self.user.userdetail_id).filter(telephone=telephone).first()
      if not telephone_obj:
          return telephone
      else:
          raise ValidationError(‘该电话已经被注册!‘)

其次:传入想要的对象

form = PSUserForm(request.POST, this_user=request.user)

很简单,本身forms验证组件需要传入表单内容进行验证(request.post中就是前端提交的form表单内容),只需要把额外的参数一同传给forms模块就可以了。是不是简单?

原文地址:https://www.cnblogs.com/sly27/p/10620945.html

时间: 2024-10-29 04:25:19

django 将view视图中的对象传入forms表单验证模块中的相关文章

iview中Modal弹窗做form表单验证相关问题

在modal中初始化状态,点击确定弹窗消失. 有的时候表单验证就不希望立刻消失 在iview官网中有自定义页头页脚 可以直接自定义使用 如果报错 validate 未定义的话,需要看一下点击事件内容引号是否正确 原文地址:https://www.cnblogs.com/xu-nian-qin/p/10824736.html

ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)

转自:http://www.cnblogs.com/zyqgold/archive/2010/11/22/1884779.html 在ASP.NET MVC框架中,将视图中的数据传递到控制器中,主要通过发送表单实现的.具体使用中,主要使用以下三种方法. 1.通过Request.Form读取表单数据        2.通过FormCollection读取表单数据        3.直接读取表单数据对象 下边是我学习这些东西时的一点总结 1.通过Request.Form读取表单数据      首先定

Django中的Form表单验证

回忆一下Form表单验证的逻辑: 前端有若干个input输入框,将用户输入内容,以字典传递给后端. 后端预先存在一个Form表单验证的基类,封装了一个检测用户输入是否全部通过的方法.该方法会先定义好错误信息的字典,并会遍历类的所有属性(对应前端待验证的输入域),调用各自的验证方法,将错误信息(两类,必要与否以及格式正确与否)存入字典,并得出最终的验证结果.在使用时,需要定义继承自Form基类不同的Form类,以对应有着不同输入域的Form表单.在拿到前端给的字典前,要先初始化自定义From类,直

Python自动化运维系列之Django Form表单验证

Form表单验证 Django核心功能组件之一,虽然也可以在前端使用JS对表单验证, 但是Django中已经为我们准备好的Form功能还算是很强大的,有时候比较适合运维,为我们简化了很多前端开发工作. Django最主要的几个功能有4个     ·  生成HTML标签     ·  验证数据(表单错误信息提示)     ·  HTML 表单保留上次提交数据     ·  初始化页面表单内容 Django的Form内容还是挺多的,我们可以从一个简单的登陆验证例子来看看Form的基本功能使用 1)新

Django基础之Form表单验证

Form表单验证 1.创建Form类(本质就是正则表达式的集合) from django.forms import Form from django.forms import fields from django.forms import widgets from Mybbs.models import * import re class UserForm(Form): username = fields.CharField( required=True, error_messages={'re

Flask10 登录模块、表单框架、表单渲染、表单验证、bookie、请求之前钩子、g对象、编写装饰器

from flask import Flask from flask import request from flask import render_template from flask_wtf import CSRFProtect as WTF # 利用表单类去渲染模板时需要用到 from forms import LoginForm app = Flask(__name__) WTF(app) # 在app上注册一个 WTF (所有的flask插件都必须进行注册) app.config.f

8-1 对象习题表单验证

1.对象习题 1.将字符串str = "When I was young, I love a girl in neighbor class."中,从young提取到girl生成新字符串.但是不许数 var str = "When I was young, I love a girl in neighbor class."; //1.找出位置 var start = str.indexOf("young"); var end = str.index

angularjs中的表单验证

angular对html原生的form做了封装,增加了很多验证功能 1.代码结构 <form name="signup_form" novalidate ng-submit="signupForm()"> <div> <label>用户名</label> <input type="text" placeholder="Name" name="name"

jQuery基础(常用插件 表单验证,图片放大镜,自定义对象级,jQuery UI,面板折叠)

1.表单验证插件--validate   该插件自带包含必填.数字.URL在内容的验证规则,即时显示异常信息,此外,还允许自定义验证规则,插件调用方法如下: $(form).validate({options}) 其中form参数表示表单元素名称,options参数表示调用方法时的配置对象,所有的验证规则和异常信息显示的位置都在该对象中进行设置.     2.表单插件--form 通过表单form插件,调用ajaxForm()方法,实现ajax方式向服务器提交表单数据,并通过方法中的option