在django view中给form传入参数的例子


Posted in Python onJuly 19, 2019

在django的form表单会出现,在form的验证或者保存时需要非form中的field的信息参数。例如在对操作进行记录,我们需要根据将记录的操作人设置为当前的用户,所以在view中我们需要将user的信息传入到form中,方便在form.save()d的方法使用。

models

# models.py

from django.db import models
from django.contrib.auth.models import User


class Record(models.Model):

 user = models.ForeignKey(User, on_delete=models.CASADE, verbose_name='操作者')
 operate = models.CharField(max_length=20, verbose_name='操作')

我们创建一个record模型,里面有user以及operate2个field。

forms

# forms.py

from django import forms

from .models import Record


class RecordForm(forms.ModelForm):

 def __init__(self, *args, **kwargs):
  self.user = kwargs.pop('user')
  super().__init__(*args, **kwargs)

 def save(self, commit=True):
  instance = super().save(commit=False)
  instance.user = self.user
  if commit:
   instance.save()
  return instance

 class Meta:
  model = Record
  fields = ['operate', ]

在form中我们首先使用ModelForm方便我们对将表单直接转化为model并保存。我们在__init__方法中将传入的user保存为参数,并在save方法中取出并使用。

views

# views.py

from django.views.generic import FormView

from .forms import RecordForm


class RecordView(FormView):
 form_class = RecordForm

 def get_form_kwargs(self):
  kwargs = super().get_form_kwargs()
  kwargs.update({
   'user': self.request.user,
  })
  return kwargs

 ...

我们在get_form_kwargs传入user的参数变量,这样form中就可以获得这一参数。

以上这篇在django view中给form传入参数的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现简单的代理服务器
Jul 25 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
Python实现的求解最大公约数算法示例
May 03 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
Python引用计数操作示例
Aug 23 Python
numpy linalg模块的具体使用方法
May 26 Python
django将数组传递给前台模板的方法
Aug 06 Python
python os.fork() 循环输出方法
Aug 08 Python
Python搭建代理IP池实现检测IP的方法
Oct 27 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
Python析构函数__del__定义原理解析
Nov 20 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 Python
使用Python制作表情包实现换脸功能
Jul 19 #Python
解决Django一个表单对应多个按钮的问题
Jul 18 #Python
Django工程的分层结构详解
Jul 18 #Python
django mysql数据库及图片上传接口详解
Jul 18 #Python
解决django中ModelForm多表单组合的问题
Jul 18 #Python
浅谈Django中view对数据库的调用方法
Jul 18 #Python
django-rest-framework解析请求参数过程详解
Jul 18 #Python
You might like
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
JavaScript如何自定义trim方法
2015/07/28 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
浅谈Python的异常处理
2016/06/19 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
国际会议邀请函范文
2014/01/16 职场文书
自我评价的范文
2014/02/02 职场文书
工艺员岗位职责
2014/02/11 职场文书
党建目标管理责任书
2014/07/25 职场文书
心理健康教育主题班会
2015/08/13 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电