web开发django模型

在django开发中,要求我们使用app进行数据库的开发

在一个web项目中,比如电商项目,电商项目中有用户管理模块,订单管理模块,商品管理的模块,日志管理等模块放在同一个urls,views中不方便管理,django给我们提供了子应用,将独立的功能进行独立管理,将独立的模块放在同一个app当中,包括该模块的路由,视图,html,静态资源。

1.创建app子应用

python manage.py startapp app01
app01 是子应用的名字

子应用目录说明

migrations 数据迁移文件,数据库表结构的同步的

admin.py 站点管理

apps.py 配置当前子应用的相关信息

models.py 模型

tests.py 用于开发测试应用

views.py 视图文件

注意:

  子应用中没有路由文件,需要自己创建

2.配置子应用

3.使用

4.配置子应用管理自已的路由

步骤:

  1. 子应用中创建urls.py

  2. 主目录的路由文件中 导入include

    path(‘app01/’,include(‘app01.urls’))

访问:

django数据库开发思维与ORM

1.创建数据库

create database stu charset=utf8;

2.配置数据库

在主目录的settings.py文件中 配置数据库

DATABASES = {
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'stu', ##库名
'USER':'root', ##用户名
'PASSWORD':'999999', ##用户密码
'HOST':'127.0.0.1', ##IP地址
'PORT':'3306', ##端口号
}
}

3.安装pymysql

pip install pymysql

4.编写模型

在子应用的models.py文件中 编写模型

from django.db import models

class Person(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
age = models.IntegerField()
height = models.DecimalField(max_digits=5,decimal_places=2)
birthday = models.DateField()

字段类型

CharField varchar类型,需要指定长度

IntegerField 整型

DecimalField 浮点型,需要指定最大长度和小数点位数

DateField 日期 年-月-日

字段属性

max_length 最大长度

verbose_name 备注,站点管理中用于显示字段为中文

max_digits 浮点型最大长度

decimal_places 小数点位数

5.数据迁移

数据迁移之前的准备工作

1.在数据迁移之前,确定配置是否完成

python manage.py check

2.排错

  • 第一个错误

Error loading MySQLdb module.

原因:django模式使用python2 版本的mysql数据库模块,python3 使用的是pymysql模块

解决方法:

  • 第二个错误

ImproperlyConfigured:mysqlclient 1.3.13 or newer is required ; you have 0.9,3

原因:django默认检测pymysql的版本,修改源码,去掉检测

解决办法:

将上图中35,36两行代码注释掉

执行数据迁移操作

  1. 生成迁移文件
python mange.py makemigrations  生成一个迁移文件

AttributeError:‘str’ object has no attribute ‘decode’

解决方案:

操作成功



2. 同步表结构

python mange.py migrate  使用迁移文件,进行表结构的同步

查看数据库stu

app-person表是根据我们写的类模型创建的表,默认名字是 子应用名字–模型名字(小写)

修改表的默认名字

6.站点管理

创建超级用户

createsuperuser
设置用户名
设置密码

站点管理

安装模型类



使用后台增加数据

修改站点管理后台为中文

创建app子应用,配置数据库,编写模型,进行数据迁移的更多相关文章

  1. ubuntu 下 mysql数据库的搭建 及 数据迁移

    1.mysql的安装 我是使用apt-get直接安装的 :sudo apt-get install mysql-server sudo apt-get install mysql-client 2.配 ...

  2. Ubuntu中开启MySQL远程访问功能,并将另一个数据库服务器中的数据迁移到新的服务器中

    一.开启MyS远程访问功能 1.进入服务器输入netstat -an | grep 3306确认3306是否对外开放,MySQL默认状态下是不对外开放访问功能的.输入以上命令之后如果端口没有被开放就会 ...

  3. 笔记:EF出现列名 'Discriminator' 无效、类没有加入数据库上下文也被数据迁移生成表

    笔记: EF出现列名 'Discriminator' 无效: 类没有加入数据库上下文也被数据迁移生成表: 出现该问题一般是使用了某个基类继承了实体类: 原因是code first的POCO实体对象的继 ...

  4. CodeFirstMigrations更新数据库结构(EF数据迁移)

    背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的 ...

  5. ES数据库重建索引——Reindex(数据迁移)

    应用背景: 1.当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex. 2.当数据的mapping需要修改,但是大量的数据 ...

  6. Django添加模型无法数据迁移解决方法

    用Django开发一款博客,按照教程一步步写下来,发现当我创建一个模型blogpost的时候,使用数据迁移 python manage.py migrate 提示 Operations to perf ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (38) ------ 第七章 使用对象服务之动态创建连接字符串和从数据库读取模型

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第七章 使用对象服务 本章篇幅适中,对真实应用中的常见问题提供了切实可行的解决方案. ...

  8. EF简单的CodeFirst示例(自己创建数据库,不使用数据迁移)

    1.新建一个控制台应用程序 2.右键引用--管理NuGet程序包,安装如下几项 3.打开App.config文件,加入如下代码: <connectionStrings>    <ad ...

  9. EF三种数据库操作模型比较

    https://blog.csdn.net/xiongmeiqin/article/details/80196089 EF 中 Code First 的数据迁移以及创建视图 写在前面: EF 中 Co ...

随机推荐

  1. android studio出现 Could not initialize class com.android.sdklib.repository.AndroidSdkHandler

    新的android studio  (4.2)已经不支持旧有的 com.android.tools.build:gradle:2.3.3 了,有些方法和类会找不到. 去build.gradle中把这个 ...

  2. ANTLR 语法设计

    下面学习如何编写语法. 如何定义语法规则 一种语言模式就是一种递归的语法结构. 我们需要从一系列有代表性的输入文件中归纳出一门语言的结构.在完成这样的归纳工作后,我们就可以正式使用ANTLR语法来表达 ...

  3. CF289B Polo the Penguin and Matrix 题解

    Content 有一个 \(n\times m\) 的矩阵 \(A\),每次操作你可以将某一个元素增加或减少 \(d\),求是所有元素相等的最小操作次数,或者不存在这样的操作方案. 数据范围:\(1\ ...

  4. Python3 day6面向对象

    http://www.cnblogs.com/alex3714/articles/5188179.html ====================生活中==================== 世界 ...

  5. javascript中的12种循环遍历方法

    1.for (自定义条件) 循环 let arr = [1,2,3]; for(let i =0;i<arr.length;i++){ console.log(i,arr[i]) } 2.for ...

  6. Spring Security Filter 学习笔记

    过滤器可以简单理解成用于拦截请求,并执行相应逻辑的代码. 在Spring Security架构中实现过滤器 在SpringSecurity中,可以通过实现 javax.servlet 包中的 Filt ...

  7. Dockerfile使用OracleJDK创建自定义tomcat8镜像

    我们默认下载的tomcat镜像是用的openjdk ,但是我们有些项目必须使用oraclejdk 那就不能使用官方的tomcat镜像,只能重新自定义一个镜像 Dockerfile文件 FROM cen ...

  8. 【LeetCode】762. Prime Number of Set Bits in Binary Representation 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历数字+质数判断 日期 题目地址:https:// ...

  9. Balancing Act(poj1655)

    Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12703   Accepted: 5403 De ...

  10. Collision(hdu5114)

    Collision Time Limit: 15000/15000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)Tot ...