在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线程的两种编程方式
Apr 14 Python
python结合API实现即时天气信息
Jan 19 Python
Python探索之创建二叉树
Oct 25 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
对python 通过ssh访问数据库的实例详解
Feb 19 Python
Python3远程监控程序的实现方法
Jul 15 Python
python双向链表原理与实现方法详解
Dec 03 Python
为什么黑客都用python(123个黑客必备的Python工具)
Jan 31 Python
TensorFlow 读取CSV数据的实例
Feb 05 Python
Python几种常见算法汇总
Jun 02 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 Python
Python 求向量的余弦值操作
Mar 04 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&MYSQL留言板源码
2020/07/19 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
php加密解密实用类分享
2014/01/07 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
PHP内置过滤器FILTER使用实例
2014/06/25 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
JQuery的一些小应用收集
2010/03/27 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
JS面向对象编程详解
2016/03/06 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
Python3处理文件中每个词的方法
2015/05/22 Python
django实现分页的方法
2015/05/26 Python
python自动zip压缩目录的方法
2015/06/28 Python
20招让你的Python飞起来!
2016/09/27 Python
Python 递归函数详解及实例
2016/12/27 Python
Python实现读取并保存文件的类
2017/05/11 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
个人评价范文分享
2014/01/11 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
员工家属慰问信
2015/03/24 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers