在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使用django获取用户IP地址的方法
May 11 Python
Python复数属性和方法运算操作示例
Jul 21 Python
Python多线程原理与用法详解
Aug 20 Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 Python
Python2与Python3的区别实例分析
Apr 11 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
Jul 23 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
python爬虫-模拟微博登录功能
Sep 12 Python
为什么黑客都用python(123个黑客必备的Python工具)
Jan 31 Python
使用python-cv2实现视频的分解与合成的示例代码
Oct 26 Python
python 管理系统实现mysql交互的示例代码
Dec 06 Python
Python实现Hash算法
Mar 18 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使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
go语言计算两个时间的时间差方法
2015/03/13 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
python-str,list,set间的转换实例
2018/06/27 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
空中乘务员岗位职责
2014/03/08 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
个人课题方案
2014/05/08 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
基于python的matplotlib制作双Y轴图
2021/04/20 Python