在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网络编程之TCP通信实例和socketserver框架使用例子
Apr 25 Python
Python while 循环使用的简单实例
Jun 08 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
基于树莓派的语音对话机器人
Jun 17 Python
python读写csv文件实例代码
Jul 05 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
python numpy--数组的组合和分割实例
Feb 24 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
Apr 10 Python
全网首秀之Pycharm十大实用技巧(推荐)
Apr 27 Python
基于python连接oracle导并出数据文件
Apr 28 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 Python
python迷宫问题深度优先遍历实例
Jun 20 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
php支付宝在线支付接口开发教程
2016/09/19 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
jQuery Study Notes学习笔记 (二)
2010/08/04 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
Jquery简单分页实现方法
2015/07/24 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
2016/07/04 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
vuex 的简单使用
2018/03/22 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
python使用urlparse分析网址中域名的方法
2015/04/15 Python
python机器学习实战之K均值聚类
2017/12/20 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
2013年员工自我评价范文
2013/12/27 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
《1942》观后感
2015/06/08 职场文书
详解Python中__new__方法的作用
2022/03/31 Python