在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爬虫之神器正则表达式
Nov 06 Python
Python是编译运行的验证方法
Jan 30 Python
python实现将内容分行输出
Nov 05 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
解决Python一行输出不显示的问题
Dec 03 Python
python gdal安装与简单使用
Aug 01 Python
Python数组并集交集补集代码实例
Feb 18 Python
Python实现对word文档添加密码去除密码的示例代码
Dec 29 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引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
2017/07/18 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python装饰器使用示例及实际应用例子
2015/03/06 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
python基础教程项目三之万能的XML
2018/04/02 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
python提取xml里面的链接源码详解
2019/10/15 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
初中考试作弊检讨书
2014/02/01 职场文书
鲁冰花观后感
2015/06/10 职场文书
2015最新民情日记范文
2015/06/26 职场文书