Django是一个开放源代码的Web应用框架,由Python写成,采用了MVC的框架模式.

MVC

MVC是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改造和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入,处理和输出功能在一个逻辑的图形化用户界面的结构中.

M->Model(模型):是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据

V->View(视图):是应用程序中处理数据显示的部分,是应用程序中处理数据显示的部分

C->Controller(控制器):是应用于程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据

核心思想:解耦

优点:降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用

MTV

有些WEB框架觉得MVC的字面意思很别扭,就给它改了一下,改成了MTV,本质其实也是MVC

M->Model(模型):负责业务对象与数据库的对象(ORM)

T->Template(模板):负责如何把页面展示给用户

V->View(视图):负责业务逻辑,并在适当的时候调用Model和Template

安装

终端输入pip install Django==1.11.4(不写版本默认为最新版本)

验证

进入Python环境——>>>import django   导入成功即验证成功

创建项目

创建目录——终端进入到创建的目录下,输入django-admin startproject project——目录里生成以下文件即成功

设计表结构

在数据库中设计用来测试或使用的表就行

配置数据库(Django默认使用的是SQLite数据库)

1.在settings.py文件中,通过DATABASES选项进行数据库配置

2.配置SQL

python3.x安装的是pyMySQL

在__init__.py文件中写入两行代码:import pymysql

                pymysql.install_as_MySQLdb()

格式:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql', # 使用的数据库类型

'NAME': '数据库名',

'USER': '用户名',

'PASSWORD': '数据库密码',

'HOST': '数据库服务器ip',

'PORT': '端口'

    }

}

创建应用(在一个项目中可以创建多个应用,每个应用进行一种业务处理)

终端进入Python-Django目录下的project目录

执行python manage.py startapp myApp,然后会生成一个myApp文件夹:

激活应用

在settings.py文件中,将myApp应用加入到INSTALLED_APPS选项中

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'myApp'

]

定义模型(在model.py文件中定义模型)

例如:

from django.db import models

# Create your models here.

# 一个模型就是一个表

class Grades(models.Model):

# 表中的属性

# 字符串

gname = models.CharField(max_length=20)

# 时间类型

gdate = models.DateField()

# 数字类型

ggirlnum = models.IntegerField()

gboynum = models.IntegerField()

# 布尔类型

isDelete = models.BooleanField(default=False)

class Students(models.Model):

sname = models.CharField(max_length=20)

sgender = models.BooleanField(default=True)

sage = models.IntegerField()

scontent = models.CharField(max_length=20)

isDelete = models.BooleanField(default=False)

# 关联外键

sgrage = models.ForeignKey("Grades", on_delete=models.CASCADE)

说明:不需要定义主键,在生成时自动添加,并且值为自动添加

生成迁移文件

因为本来技术和经验不足,这一步对于新手来说,运气不好真的是有可能把你心态搞崩,反正我尝试了好多百度上的解决办法,都以失败而告终,最终看到一个帖子(之前看过的,忘记是哪一篇了),让我把我即将喷出的一口老血强行咽了下去

硬杠后端(后端坑系列)——Django前期工作的更多相关文章

  1. 2-STM32带你入坑系列(点亮一个灯--Keil)

    1-STM32带你入坑系列(STM32介绍) 首先是安装软件 这一节用Kei来实现,需要安装MDK4.7这个软件,怎么安装,自己百度哈.都学习32的人了,不会连个软件都不会安装吧....还是那句话 没 ...

  2. gulp入坑系列(2)——初试JS代码合并与压缩

    在上一篇里成功安装了gulp到项目中,现在来测试一下gulp的合并与压缩功能 gulp入坑系列(1)--安装gulp(传送门):http://www.cnblogs.com/YuuyaRin/p/61 ...

  3. 《神秘的程序员们》漫画26~28:《万年坑系列》 I、II、III(转)

    26 <万年坑系列> I:那些令你憎恶的系统从何而来? 世界上总有一些令人憎恶的系统,而你却天天非用不可.这些系统的提供方们既不缺钱也不缺人,有的还很热衷于改版升级. 但为何升级完后,它们 ...

  4. 3-STM32带你入坑系列(自己封装点亮一个灯的库--Keil)

    2-STM32带你入坑系列(点亮一个灯--Keil) 首先建一个stm32f103x.h的文件,然后 #include "stm32f103x.h" 还记得上一节 现在呢就是做一个 ...

  5. 1-STM32带你入坑系列(STM32介绍)

    由于自己的物联网开发板上的单片机是用的STM32,但是有些朋友没有用过,所以我将用这块开发板,带着大家入门STM32 先介绍一下STM32,我是在大三下学期的时候开始接触STM32,当时是想做一个小车 ...

  6. MySQL填坑系列--Linux平台下MySQL区分大小写问题

    大家好,我是软件大盗(道),下面开始我们的<MySQL填坑系列>. 笔者最近又在MySQL的边缘试探,然后,试探着,试探着就报错了. 书接上文,系统连接数据库时报错:找不到DB_TIMIN ...

  7. jmeter踩坑系列

    1.踩坑系列一: 抓包出来有host的字段,放到jmeter里面一起请求就报错了,去掉就请求正常了 1.踩坑系列二: 从花瓶复制过去 的values 前面有空格,肉眼看起来没有

  8. 入坑第二式 golang入坑系列

    史前必读: 这是入坑系列的第二式,如果错过了第一式,可以去gitbook( https://andy-zhangtao.gitbooks.io/golang/content/ )点个回放,看个重播.因 ...

  9. WebGL 踩坑系列-3

    WebGL 踩坑系列-3 绘制球体 在 WebGL 中绘制物体时需要的顶点是以直角坐标表示的, 当然了,gl_Position 是一个四维的向量,一般将顶点赋值给 gl_Position 时,最后一维 ...

随机推荐

  1. windows粘贴板操作-自己的应用和windows右键互动

    一.粘贴板操作函数 BOOL OpenClipboard(HWND hWnd);参数 hWnd 是打开剪贴板的窗口句柄,成功返回TRUE,失败返回FALSE BOOL CloseClipboard() ...

  2. Vuex的初探与实战

    1.背景 最近在做一个单页面的管理后台项目,为了提高开发效率,使用了Vue框架来开发.为了使各个部分的功能,独立结构更加清晰,于是就拆分了很多组件,但是组件与组件之间数据共享成了一个问题,父子组件实现 ...

  3. java并发编程(1) --并发基础及其锁的原理

    引言 多线程的知识点是一个庞大的体现,对此也是一知半解.一直想系统的深入的学习多线程的知识,奈何一直没有找到机会,好吧,其实就是懒.最近在项目中接触到一个多并发的项目,在项目中踩了无数的坑.在此下定决 ...

  4. Android进程间通信(一):AIDL使用详解

    一.概述 AIDL是Android Interface Definition Language的缩写,即Android接口定义语言.它是Android的进程间通信比较常用的一种方式. Android中 ...

  5. c#在pictureBox控件上绘制多个矩形框及删除绘制的矩形框

    在pictureBox上每次只绘制一个矩形框,绘制下一个矩形框时上次绘制的矩形框取消,代码如链接:https://www.cnblogs.com/luxiao/p/5625196.html 在绘制矩形 ...

  6. JDK1.8-Java虚拟机运行时数据区域和HotSpot虚拟机的内存模型

    目录 介绍 官方文档规定的运行时数据区域 程序计数器 Java虚拟机栈 本地方法栈 虚拟机栈和本地方法栈溢出 Java堆 演示堆内存溢出 方法区 运行时常量池 演示方法区溢出 HotSpot虚拟机的内 ...

  7. Yii2设计模式——静态工厂模式

    应用举例 yii\db\ActiveRecord //获取 Connection 实例 public static function getDb() { return Yii::$app->ge ...

  8. A项目轶事之加入项目2个月

    A项目轶事之加入项目2个月 4月18号是我入A项目整整2个月的日子. 加入项目第一天,就发现A项目是一个大规模的SAP ERP项目. SAP各大模块,Salesforce, MES等各个系统相关的顾问 ...

  9. 管道及I/O重定向

    管道及IO 重定向 > < >> <<计算机组成: 运算器,控制器:CPU 存储器:RAM 输入/输出设备 I/O 程序: 指令和数据 控制器:指令 运算器: 存储 ...

  10. Chrome内核浏览器打开网页报 错误代码: ERR_TIMED_OUT

    升级win10之后如果出现chrome内核的浏览器网页总是打不开 打开很慢  而ie和edge是可以正常访问的 用这个方法可以  我弄了几天终于 搞好了我直接转载过来了近期,工程师收到大量反馈360浏 ...