目录

一、创建项目

二、设计模型类:

1、创建子应用

2、书写模型类

3、迁移

4、测试数据库操作:


一、创建项目

  1. 在本地创建一个文件夹:项目练习 
  2. pycharm进入该文件夹。终端运行   
  3. 会在项目练习下生成一个项目名为test1的文件夹,里面存在个同名称的子项目。

其中  1)__init__.py文件表示test1这个文件夹是一个包。可import

2)最上面的test1为项目目录

3)下面的test1为项目,是一个包。

4)manage.py文件为执行文件,一个命令行工具,可以使用多种方式对django项目进行交互

5)setting.py:其中项目的配置文件

6)urls.py:项目的url声明

7)wsgi.py:项目与wsgi兼容的web服务器的入口

二、设计模型类:

例如:‘图书--英雄’ 一对多的关系

1、创建子应用

在当前项目目录中,创建一个应用:python manage.py startapp booktest

其中booktest中的目录结构为:

1)migrations:为迁移文件,在数据库发生迁移的时候回生成一个文件,根据当前项目中模型类生成数据库脚本,并将脚本映射到数据库中

2)admin.py:后台管理使用

3)models.py:定义模型类

4)tests.py:测试模块

5)views.py:视图函数的定义

2、书写模型类

在子应用(booktest)中的models.py中构造模型类

from django.db import models#‘图书--英雄’ 一对多的关系。模型类的作用是:根据写的模型类生成sql语句,创建表。通过模型类还可以创建对象,然后进行操作。我们对模型类的操作是可以映射到数据库中生成sql语句
'''
图书表结构的设计:表名:Bookinfo图书名称:btitle图书发布时间:bpup_date英雄表结构设计:表名:Heroinfo英雄姓名:hname英雄性别:hgender英雄简介:hcontent所属图书:hbook
'''class BookInfo(models.Model):btitle = models.CharField(max_length=20)        #定义书名为字符串格式,最大长度为20bpup_date = models.DateTimeField()              #定义发布时间为时间类型class HeroInfo(models.Model):hname = models.CharField(max_length=10)hgender = models.BooleanField()                  #BooleanField:可以填写true false,NullBooleanField:true false nullhcontent = models.CharField(max_length=150)hbook = models.ForeignKey('BookInfo',on_delete=models.CASCADE)              #hbook代表的是其中图书表中的某个图书对象,所以使用外键

3、迁移

当前使用的数据库为:

1、如果想本应用可以正常被使用的话,需要在设置文件setting.py中将该应用进行注册

2、运行命令为:python manage.py makemigrations(要在manage.py的目录下哈,该命令为生成迁移文件)

成功了显示

同时在子应用中的migrations中生成一个迁移文件(其中会自动生成id)

3、执行迁移:python manage.py migrate(同样需要在manage.py 目录下哈,就是将迁移文件转化为sql语句来创建表)

执行成功了显示

4、测试数据库操作:

进入python shell,进行简单的数据库测试

1、执行命令:python manage.py shell (要在manage.py的目录下哈)

进来之后长成这样:

2、测试:

from booktest.models import *b = BookInfo()b.btitle = 'abc'from datetime import datetimeb.bpup_date = datetime(year = 2020,month = 1,day = 14)b.save()

成功之后显示:

警告,时区问题啦,不过不影响。

如果想查看刚刚插入的图书信息的话,执行命令:BookInfo.objects.all()

执行后显示:返回的列表。列表中是对象,如果想让其返回相应的名字,需要在模型类中增加__str__方法,直接将其return即可。

from django.db import models#‘图书--英雄’ 一对多的关系。模型类的作用是:根据写的模型类生成sql语句,创建表。通过模型类还可以创建对象,然后进行操作。我们对模型类的操作是可以映射到数据库中生成sql语句
'''
图书表结构的设计:表名:Bookinfo图书名称:btitle图书发布时间:bpup_date英雄表结构设计:表名:Heroinfo英雄姓名:hname英雄性别:hgender英雄简介:hcontent所属图书:hbook
'''class BookInfo(models.Model):btitle = models.CharField(max_length=20)        #定义书名为字符串格式,最大长度为20bpup_date = models.DateTimeField()              #定义发布时间为时间类型def __str__(self):return self.btitleclass HeroInfo(models.Model):hname = models.CharField(max_length=10)hgender = models.BooleanField()                  #BooleanField:可以填写true false,NullBooleanField:true false nullhcontent = models.CharField(max_length=150)hbook = models.ForeignKey('BookInfo',on_delete=models.CASCADE)              #hbook代表的是其中图书表中的某个图书对象,所以使用外键def __str__(self):return self.hname

因为此次更改不涉及到模型类的更改,只是增加的__str__方法,所以不需要重新进行迁移,如果更改表结构,以及字段等,需要进行重新迁移。

此时,需要将shell退出,重新进入。exit()

此时返回的是abc,就是字段值了。

注意:如果我们更改models.py中的模型类,需要重新生成迁移文件。此时执行python manage.py makemigrations会显示如下:

显示如下,则修改成功:

然后再执行迁移,如下:

查看数据库则修改成功:

python--django基础篇(创建项目,模型类,迁移,测试数据库操作)相关推荐

  1. Python学习-基础篇5 常用模块+类与对象(1)

     #random模块 1 import random2 3 print(random.random())#(0,1)----float 大于0且小于1之间的小数4 5 print(random.ran ...

  2. Django基础5.1,模型层(二)多表操作

    Django5.1 创建模型 建立下列模型 # 作者表 class Author(models.Model):name=models.CharField( max_length=32)age=mode ...

  3. Python基础篇(六)-- 类和对象

    Python语言在设计之初,就定位为一门面向对象的编程语言,而面向对象编程(Object-oriented Programming,简称 OOP),是一种封装代码的方法.比较正式的说法,"把 ...

  4. Django基础核心技术之Model模型的介绍与设计

    Django基础核心技术之Model模型的介绍与设计 原创: Yunbo Shi Python Web与Django开发 2018-05-03 Django网络应用开发的5项基础核心技术包括模型(Mo ...

  5. Django(part49)--用Django自带的User模型类进行模拟登录

    学习笔记,仅供参考 用Django自带的User模型类进行模拟登录 基于上个Blog中学习的用户认证系统,我们再用Django自带的User模型类,进行模拟登录(模拟登录的意思就是没有真正的登录,不涉 ...

  6. Python机器学习基础篇三《无监督学习与预处理》

    前言 前期回顾: Python机器学习基础篇二<为什么用Python进行机器学习> 上面这篇里面写了文本和序列相关. 我们要讨论的第二种机器学习算法是无监督学习算法.无监督学习包括没有已知 ...

  7. Python机器学习基础篇二《监督学习》

    前言 前期回顾: Python机器学习基础篇一<为什么用Python进行机器学习> 前面说过,监督学习是最常用也是最成功的机器学习类型之一.本章将会详细介绍监督学 习,并解释几种常用的监督 ...

  8. “笨办法”学Python 3基础篇-文件操作

    "笨办法"学Python 3基础篇系列文章 "笨办法"学Python 3基础篇 第一部分-打印与输入 "笨办法"学Python 3基础篇 第 ...

  9. “笨办法”学Python 3基础篇 - 函数

    "笨办法"学Python 3基础篇系列文章 "笨办法"学Python 3基础篇 第一部分-打印与输入 "笨办法"学Python 3基础篇 第 ...

  10. Django基础02 视图和模型

    2. Django的V和M 2.1 视图(views) 视图是Django程序中处理后端业务逻辑的地方. Django的视图是定义在子应用的views.py中的. Django的视图分为 函数视图 和 ...

最新文章

  1. java creat uid_关于uniqueidentifier:如何在Java中创建唯一ID?
  2. 【uniapp】组件封装与引用
  3. B - 一只小蜜蜂...
  4. ux设计_为企业UX设计更好的数据表
  5. 设置tableView的分割线从最左端开始
  6. 数据科学与python——Pandas统计分析基础(数据堆叠+数据清洗)
  7. 异步网络消息处理框架
  8. 【Siddhi】Siddhi 入门案例
  9. 响应式网站与自适应网站比较
  10. mac 强制退出程序_Mac OS系统如何强制退出应用程序
  11. 控制系统数字仿真与CAD-第四次实验-附完整代码
  12. 创建Web Service后,客户端不能调用的解决办法(提示:此方法只有在本地才可以使用)...
  13. 怎样才能演示正弦和余弦的相互变换
  14. linux编辑文件发生错误E45: ‘readonly‘ option is set (add ! to override)
  15. 《自控力》读后感——意志力与认识自己
  16. Sobel,拉普拉斯算子
  17. 那些从来不用花呗的女孩
  18. MIT又出新玩法,利用AI可轻松分离视频中的乐器声音
  19. 随机生成车牌号【python实现】
  20. 酷睿i7和i5对计算机专业要求,英特尔i5已经足够用 还有必要升级i7处理器吗?

热门文章

  1. Eigen中 EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF的使用方式_C/C++中的预编译简介
  2. 算法笔记_面试_0.刷leetcode_基础知识范围
  3. dpkg:处理软件包 xxx (--configure)时出错
  4. Web前端开发规范之文件存储位置规范
  5. Spring Cloud之Swagger集群搭建
  6. 隐藏WIN10资源管理器中的3D对象文件夹
  7. PAT乙级.1013.数素数
  8. 如何往linux上面上传东西
  9. 向设计师分享30个免费的扁平化风格设计素材
  10. SQLServer2008----对数据分区