django -- ORM实现图书增删改查】的更多相关文章

表结构设计 上篇我们实现了出版社的增删改查,出版社数据表有两个字段id和name,那图书的表结构怎么设计呢?图书也要有一个主键id,还要有一个名称title,是哪个出版社的,要有个字段press和Press表里的id对应,这样图书就需要三个字段,id,title,press 创建表 # 图书表 class Book(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(max_length=…
前戏 我们来完成一个图书管理系统的增删改查 表结构设计 1. 出版社 id   name 2. 作者 id  name 3. 书 id  title  出版社_id 4. 作者_书_关系表 id  书_id  作者_id 创建表 现在有个需求,当我们访问http://127.0.0.1:8080/press_list/这个网址时,django给我们返回所有的出版社名称,我们可以在models里创建一个press的类来生成数据表 class Press(models.Model): id = mo…
前戏 前面我们已经实现了出版社的增删改查,书的增删改查,书和出版社的对应关系.现在来写一下作者的增删改查和书的对应关系,那书和作者有什么关系呢?一个作者可以写多本书,一本书可以有多个作者,所以书和作者是多对多的关系,这样的话,我们就需要一张表来记录书和作者的关系,想一下sql语句是怎么创建表的 -- 创建作者表 create table author( id int primary key auto_increment, name ) not null ); -- 创建作者和书的关系表 crea…
模版语法分配变量 在views.py文件中定义一个视图函数show_data: def show_data(request): # 定义一个字典 并将它展示在前端HTML文件 user_dic = {'name': 'jesse', 'age': '18'} return render(request, 'show_data.html', {'user_dic': user_dic}) 在templates文件夹内创建show_data.html文件: <!DOCTYPE html> <…
一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process using '"' #可以直接用 python3 -m pip 代替 pip3 #这个问题是pip3 版本过低直接在cmd中执行 python3 -m pip install --upgrade pip 更新pip3 # 在指定解释器环境下安装django 1.11.9 # 在真实python3环境…
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将网站所使用的静态文件默认都放在static下 静态文件 写好之后不会自动动态改变的文件资源,比如我们写好的css文件.js文件.图片文件.第三方框架文件,我们默认将所有的静态文件都放在一个static文件夹内, django是不会自动创建static文件夹的,需要我们自己在的django目录下手动创…
功能演示 信息展示 添加功能 编辑功能 删除功能 DRF构建后台数据 本例的Model如下 from django.db import models class Publish(models.Model): name = models.CharField(max_length=32) class Author(models.Model): name = models.CharField(max_length=32,verbose_name='姓名') class Book(models.Mode…
功能演示 信息展示 添加功能 编辑功能 删除功能 DRF构建后台数据 本例的Model如下 from django.db import models class Publish(models.Model): name = models.CharField(max_length=32) class Author(models.Model): name = models.CharField(max_length=32,verbose_name='姓名') class Book(models.Mode…
  项目背景 前一段时间,开始做一个项目,在考虑数据访问层是考虑技术选型,考虑过原始的ADO.NET.微软的EF.NH等.再跟经理讨论后,经理强调不要用Ef,NH做ORM,后期的sql优化不好做,公司也没有人对EF,Nh 等orm优化比较熟悉的.强调说的,我们的项目要做的得简单,可以使用ADO.NET 写原始的sql.但我自己还是喜欢ORM的,它可以提高数据访问层的开发.有一天,在订阅张善友 doNet跨平台微信公众号里,看到Dapper的推荐.了解之后,我自己喜欢喜欢Dapper,可以满足我这…
Django数据增删改查: 上课代码 from django.shortcuts import render,HttpResponse # Create your views here. from app01 import models def addBook(request): # 一对多的添加 # 方式1 #models.Book.objects.create(title="python",price=100,publishDate="2017-12-12",p…
Django是Python中一个非常牛逼的web框架,他帮我们做了很多事,里边也提前封装了很多牛逼的功能,用起来简直不要太爽,在写网站的过程中,增删改查这几个基本的功能我们是经常会用到,Django把这系列复杂的逻辑性东西都封装成了方法,供我们直接使用,在使用过程中的体会是简单到令人发指,一个简单的例子给大家演示一下. 首先创建一个有多对一关系关联模型 我们假设有一个主题,主题下边会有很多内容,然后我们将主题和内容用多对一的ForeignKey字段关联起来,如下: # models.py fro…
一 创建多表 在models.py里创建4张表:Author(作者).AuthorDetail(作者详细信息).Publish(出版社).Book(书) 四张表关系为: (1)首先创建一对一关系.OneToOneField() 创建Author表 class Author(models.Model): name=models.CharField( max_length=32) age=models.IntegerField() authorDetail=models.OneToOneField(…
上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通过操作pymysql包的对象来管理我们的mysql. 首先导入pymysql包并通过connet对象建立数据库连接. import pymysql user=input('>>>输入用户名:') pwd=input('>>>输入密码:') conn= pymysql.con…
增删改 增加 表对象直接增加方式 Frank_obj = models.Student(name ="海东",course="python",birth="2000-9-9",fenshu=80) Frank_obj.save() create 增加方式 单表增加 直接带值即可 models.Student.objects.create(name ="海燕",course="python",birth=&q…
Django中生成多个APP,每个APP下都有自己models模块,避免了多个APP之间数据的相互影响. 1.首先在APP的models下创建一个类 class UserInfo(models.Model): username = models.CharField(max_length=) password = models.CharField(max_length=) age = models.IntegerField() 2.在全局配置中添加APP名 3.通过类创建表 A.python ma…
在Python脚本中调用Django环境. import osif __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODULE", "工程名.settings") import django django.setup() from app01 import models 1 创建多表模型(详情见代码)  #用了OneToOneField和ForeignKey,模型表的字段,后面会自定加_…
1.基于orm实现用户新增 user_info.html中,增加代码: views.py中,在原user_info函数中,增加判断代码: 备注:最后一句,可以通过return redirect 实现,也可以通过被注释掉的2行,来实现: 2.orm实现记录删除 user_info.html修改代码,增加删除按钮 urls.py中增加url和函数对应关系 views.py中增加删除函数 2.orm实现记录编辑 usermodify.html urls.py 配置编辑网址和函数对应关系 views.p…
一.序列化类的增.删.改.查 用drf的序列化组件   -定义一个类继承class BookSerializer(serializers.Serializer):   -写字段,如果不指定source,字段名必须跟数据库字段名对应(source指定的值跟字段名不能重复)   -source还可以指定方法   -publish=serializers.SerializerMethodField()   def get_publish(self,obj):    obj.publish    #ob…
数据库可视化工具: https://sqlitestudio.pl/index.rvt from app01 import models def orm(request): #增加数据 # 方法1: # models.UserInfo.objects.create(username='root',password='root123') # 方法2: # obj = models.UserInfo(username='zte',password='zte') # obj.save() # 方法三:…
查 首先在url中写好路径 其次在后面参数的views里写函数类xxxxxxx的基本逻辑 定义一个函数xxxxxxx,继承request,注意这个request对数据库操作结果都会存放在request中 将Publisher类中的所有属性列出来,赋值给all_publishers 返回一个页面xxxxxxx.html,该页面里会将all_publishers展示出来 xxxxxxx.html页面如下 此页面根据数据库表来设计页面展示情况,特别注意的是,由于数据的以后会更多,不可能一一添加,使用模…
思路: 创建表------从数据库读出数据展示出来------配置路由-----写视图函数------写对应页面 练习点: 数据库建表 ORM 数据库数据读取 数据 ModelForm  (form组件是基础) 模板渲染在页面上循环取出form里字段的数据 拾遗: 在html中 可以使用 forloop.counter  在页面显示编号的序列, 而不是直接显示数据库里对应的  id 号 <td>{{ field.id }}</td>#} <!--不会显示出来后端数据库的id字…
如果路由访问的时候出现 就把项目中的注释掉 登录功能 1 路由访问如果不加斜杠 会内部自动重定向加斜杠的路由 所有的静态文件(css,js,前端第三方类库)默认都放在static文件下 #静态文件配置 STATIC_URL = '/static/' #这个是创建项目的时候django已经帮你创建好了 # 静态文件配置 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ] # 暴露给外界能够访问服务器静态文件夹下面所有的资源 STATIC_U…
本随笔使用的是pycharm专业版2019.1.3.Django==1.9.8.Python2.7 这里的Django后台使用了ORM(Object Relational Mapping),全称对象关系映射. 简单的说就是将数据实例化成一个对象,可以直接调用其中的字段,从而达到不使用SQL语句的目的. 1.查询 在此我假设我们有一个models名为UserMessage 接下来在views.py中进行操作 查询全部数据,遍历取出name字段 根据条件查询则可使用filter,这里括号的条件是an…
url(r'^userinfo/', views.userinfo), url(r'^userdetail-(?P<nid>\d+)/', views.userdetail), url(r'^userdel-(?P<nid>\d+)/', views.userdel), url(r'^useredit-(?P<nid>\d+)/', views.user_edit), views def userinfo(request): if request.method ==&q…
一.相关知识点回顾 1.什么是反射?   可以用字符串的方式去访问对象的属性 2.反射有四种方法? hasattr(object,name):判断一个对象是不是有name属性或者方法 getattr:获取对象的属性或者方法, 需要注意的是,如果返回的是对象的方法,返回出来的是对象的内存地址, 如果需要运行这个方法,可以在后面添加一对() setattr:给对象的属性赋值,如果属性不存在,先创建后赋值 delattr:删除该对象指定的一个属性 3.创建ModelForm的两种方式 # 方式一定义M…
http://www.cnblogs.com/liwenzhou/p/8660826.html 下面的代码是在 python console中配置的. 关闭pycharm会消失. from app01 import models models.Person.objects.all() <QuerySet [<Person: 小黑>, <Person: 小黑2>, <Person: 小黑6>]> 在Python脚本中调用Django环境 import os i…
友情提示请在有laravel基础的情况下观看文章 1.数据库信息(user表) CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `created_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `updated_at`…
这些都是凭记忆写下的,有些会漏掉,在之后的笔记中会写 和flask query不同,django是使用objects进行一个查询 查询 单条记录 django 模型.bojects.get(查询的字段=查询的字段) flask 模型.query.get(id=查询的id)  flask的get只能查询主键      其他查询和django基本一样 其中除了django除了get方法之外的查询结果都是查询集setquery,get则是对象  而查询集可以进行一个再次筛选 进行条件查询 filter…
一:首先使用默认的sqlite3创建表 1:现在在models.py中添加表模型 from django.db import models # Create your models here. class Book(models.Model): name=models.CharField(max_length=20) price = models.IntegerField() pub_date=models.DateField() models.py 2:在Teminal中通过命令创建表 pyt…