Django学习(三)---Models(ORM框架)
1) Django 中Models是与数据库相关的,与数据库相关的代码一般写在 models.py中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可,不用更改models.py中的代码,丰富的API极大的方便了使用。
2) Model介绍:
通常一个model对应数据库中的一张数据表
Django中的Models以类的形式表示
它包含了一些基本字段和数据的一些行为
Django中以创建类的形式来创建数据表
编写代码对数据库的操作只需要对类和类的对象的操作,不需要SQL语句(ORM)
3) ORM
对象关系映射(Object Relation Mapping)
实现对象和数据库的映射
隐藏数据访问的细节,不需要编写SQL语句
Django将和数据库交互的语句封装起来了,实现了ORM框架,给开发带来便利
4) 创建Models
新建类,继承自models.Model,该类即是一张数据表
创建字段:字段即类的属性(变量) 如:attr=models.CharField(max_length=30)
打开blog/models.py文件,修改其中的代码如下:
from django.db import models
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=32,default='my title')
content = models.TextField(null=True)
5) 生成数据表
命令行进入manage.py同级目录
执行 python manage.py makemigrations app名(可选,若不加app名,则对该项目下所有app生成移植文件)
再执行 python manage.py migrate
Django就会自动在app/migrations/下生成移植文件,可打开0001_initial.py查看
执行 python manage.py sqlmigrate 应用名 文件名 (此处应用名是app,文件名是0001)可查看SQL语句(Djngo会自动生成主键id int型 不为空 自增的)
默认sqlite3的数据库在项目根目录下db.sqlite3
6)查看并编辑db.sqlite3
使用SQLite Expert Personal打开db.sqlite3文件,点击blog_article数据表(blog前缀是默认加上的)点击+号添加数据后点击√保存即可

7)页面呈现数据
后台步骤:
views.py中import models
article = models.Article.objects.get(pk=1) Article是自己设定的类 pk主键为1 article是模型的实例
render(request, htmlURL, { 'article' : article })传递给前端
views.py如下:
from django.shortcuts import render
from . import models
# Create your views here.
def index(request):
article = models.Article.objects.get(pk=1) # article是定义的一个模型的实例,Article是自己设定的类,pk主键为1(指插入的那条记录)
return render(request,'blog/index.html',{'article':article})
前端步骤:
使用对象的“ . ”操作
index.html如下:
<!DOCTYPE html>
<html>
<head>
<title>第一个Template</title>
</head>
<body>
<h1>{{article.title}}</h1>
<h2>{{article.content}}</h2>
</body>
</html>
最后启动查看效果
Django学习(三)---Models(ORM框架)的更多相关文章
- django学习(三)
1.单表操作和测试环境的准备 我们先对单表查询做一个总结和回顾,并进行进一步的学习和交流.我们在我们的应用的models.py文件下面书写user类.如下所示,然后用数据库迁移,在mysql数据库中生 ...
- Django(三) ORM 数据库操作
大纲 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段 ...
- Django学习笔记之ORM多表操作
创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关 ...
- Django学习笔记之ORM字段和字段参数
Object Relational Mapping(ORM) 一.ORM介绍 1. ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象 ...
- Django (学习第二部 ORM 模型层)
Django对数据库的操作 Django的 ORM 简介 ORM操作 (增删改查) ORM操作数据库的增删改查 ORM创建表关系 ORM中常用字段及参数 数据库的查询优化 ORM中如何开启事务 ORM ...
- django学习之- Models笔记
1:创建数据库表 #单表# app01_user 生成的表明为 tb1class User(models.Model): name = models.CharField(max_length=32,d ...
- sqlsugar freesql hisql 三个ORM框架性能测试对比
hisql与目前比较流行的ORM框架性能测试对比 总体测试结果 插入记录数 hisql(耗时) sqlsugar(耗时) freesql(耗时) 5条 0.0107秒 0.0312秒 0.02675秒 ...
- Django学习(三) Django模型创建以及操作
在Django中可以建立自己的模型Model,这里对应Java里的实体类,跟数据库表是对应的.其中用到了django.db模块中的models.如下图所示: mysite/news/models.py ...
- day17 Django学习三
参考博客: http://www.cnblogs.com/wupeiqi/articles/5237704.html http://www.cnblogs.com/wupeiqi/articles/5 ...
随机推荐
- Cohort Analysis and LifeCycle Grids mixed segmentation with R(转)
This is the third post about LifeCycle Grids. You can find the first post about the sense of LifeCyc ...
- iOS安全攻防之结构体保护使用
Objective-C 代码很容易被 hook,因此需要对一些重要的业务逻辑进行保护,可以改用结构体的形式,把函数名隐藏在结构体里,以函数指针成员的形式存储.这样编译后只留了下地址,去掉了名字和参数表 ...
- AbstractHandlerMapping解读
一.AbstractHandlerMapping简介 AbstractHandlerMapping是HandlerMapping的抽象实现,所有的HandlerMapping都继承自AbstractH ...
- javascript基础-语法
代表此属性ECMAScript 5(一般IE9+)才支持. 图解:—— 图解: undefined,null,NaN Infinity ECMAScript 5禁止修改 每个函数都是Function的 ...
- 当react框架遇上百度地图
百度地图官方文档的使用指导是这样说的:在页面中引入<script type="text/javascript" src="http://api.map.baid ...
- Coursera 机器学习笔记(七)
主要为第九周内容:异常检测.推荐系统 (一)异常检测(DENSITY ESTIMATION) 核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非 ...
- 平面之后3D成主流?VR全景表示不服!——全景智慧城市常诚
目前很多人对VR全景这个词汇没有明确的概念,更没有人做过全面的研究,VR全景是什么?VR全景可以做什么?不同于我们经常听到的VR色情,全景智慧城市常诚今天就来为各位做一个系统全面的介绍,深入了解之后, ...
- MVC4加载zTree树小控件
前言: 第一次学习使用MVC框架,找了个练手项目,加载zTree树小控件.下面我就一步步说明我这次练手的经历以记录.如果有什么错误,希望各位大神帮忙指正,谢谢. 第一步: 利用VS2010新建一个MV ...
- Work Time Manager【开源项目】- 创建自己日志组件 2.0重构
Hello all , 我又回来了 这次我们真是开始来聊聊开源项目里,小而有用的模块或者组件的开发思想. 同时,软件已经更新到1.60的版本了,支持新用户注册,可以不再使用统一的test账户了. 您可 ...
- 浅论ajax跨域!从一个例子开始!
//所谓跨域,简单来说就是去访问不是自己域名下的数据 <!DOCTYPE html> <html lang="en"> <head> <m ...