[django]django的modelform处理数据

django的form处理数据

1.生成html
2.验证数据合法性
3.直接存库

定义1个form

class BlogPost(models.Model):
    title = models.CharField(max_length=150)
    body = models.TextField()
    timestamp = models.DateTimeField()

以前是这样的

class BlogPostForm(forms.Form):
    title = forms.CharField(max_length=150)
    body = forms.CharField(widget=forms.Textarea)
    timestamp = forms.DateTimeField()

现在可以这样了

class BlogPostForm(forms.ModelForm):
    class Meta:
        model = BlogPost

在这个例子中,不信赖用户输入正确的时间戳,而是想让应用为每篇博文以可编程的方
式添加这个内容。这一点不难,只须添加额外一个名为exclude的属性,从生成的HTML中
移除这个表单项。向blog/models.py文件中添加相应的导入语句,并在该文件的底部,BlogPost
定义的后面添加完整的BlogPostForm类。

class BlogPostForm(forms.ModelForm):
    class Meta:
        model = BlogPost
        exclude = ('timestamp',)

看下form如何生成html的

除了save

保存数据: 有了form后就不用这样保存数据了

def create_blogpost(request):
    if request.method == 'POST':
        BlogPost(
        title=request.POST.get('title'),
        body=request.POST.get('body'),
        timestamp=datetime.now(),
        ).save()
    return HttpResponseRedirect('/blog/')

可以这样

def create_blogpost(request):
    if request.method == 'POST':
        form = BlogPostForm(request.POST)
        if form.is_valid():
            form.save()
    return HttpResponseRedirect('/blog/')

遗憾的是,因为有timestamp,所以不能这样做。必须对前面的HTML表单生成过程进行特殊处理。所以需要像下面这样,使用if语句。

if form.is_valid():
    post = form.save(commit=False)
    post.timestamp=datetime.now()
    post.save()

原文地址:https://www.cnblogs.com/iiiiiher/p/9674637.html

时间: 2024-10-17 20:55:15

[django]django的modelform处理数据的相关文章

Django框架 之 modelform组件

浏览目录 创建mldelform 添加记录 编辑记录 Django框架中的modelform组件 通过名字我们可以看出来,这个组件的功能就是把model和form组合起来. 下面我们来看一个例子: 比如我们的数据库中有这样一张学生表,字段有姓名,年龄,爱好,邮箱,电话,住址,注册时间等等一大堆信息,现在让你写一个创建学生的页面,你的后台应该怎么写呢?首先我们会在前端一个一个罗列出这些字段,让用户去填写,然后我们从后天一个一个接收用户的输入,创建一个新的学生对象,保存其实,重点不是这些,而是合法性

[DJANGO] excel十几万行数据快速导入数据库研究

先贴原来的导入数据代码: 8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.settings") ''' Django 版本大于等于1.7的时候,需要加上下面两句 import django django.setup() 否则会抛出错误 django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet. ''' im

Django - Django框架 简介

Django框架 简介 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源代码的Web应用框架, 由Python写成. 采用了MVC的软件设计模式, 即模型M, 视图V和控制器C. 它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的, 并于2005年7月在BSD许可证下发布. 这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的. D

[Django]Django的orm中get和filter的不同

Django的orm中get和filter的不同 Django的orm框架对于业务复杂度不是很高的应用来说还是不错的,写起来很方面,用起来也简单.对于新手来说查询操作中最长用的两个方法get和filter有时候一不注意就会犯下一些小错误.那么今天就来小节下这两个方法使用上的不同. 我常用的是1.5版本的django,就以此为例来说说吧. 文档 首先对比下两个函数文档上的解释. get Returns the object matching the given lookup parameters,

Django form表单修改数据

form: #!/usr/bin/env python #coding:utf8 from django.forms import Form,ModelForm import models class CourseModelForm(ModelForm): class Meta: model = models.Course exclude = () def __init__(self,*args,**kwargs): super(CourseModelForm,self).__init__(*a

Django Form和ModelForm组件

Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确.如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.. Django form组件就实现了上面所述的功能. 总结一下,其实form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 普通方式手写注册功能 vi

django中的modelform和modelfoemset

一. ModelForm ModelForm是根据Model来定制的Form 二. ModelForm的创建 from django import forms from app import models class MyModelForm(forms.ModelForm): class Meta: model = models.Book fields = "__all__" labels = { "title":"书名", "pric

Django Form and ModelForm

Form介绍 在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确.如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.. Django form组件就实现了上面所述的功能. 总结一下,其实form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 普通方式手写注册功能 views.

使用Django清理数据库中的数据

数据库,数据清洗 问题叙述性说明:在系统我用在,因为历史和由于各种原因,原因记录的数据内的数据库表,有一个问题,有反复和不完整的数据 解:首先.由于数据量还是挺大的,工的清理肯定不行, 然后,我就想写SQL脚本来依照约定的规则进行更新,能够利用游标 来完毕表中的记录的遍历,可是SQL是面向结构化的查询语言,不是面向过程的.所以尽管能够可是没有C和python这种面向过程的使用方便, 后来.我想直接在我的项目中新建一个方法.然后通过浏览器的地址栏来调用.就能够了. PS:尽管说Django的orm