硬杠后端(后端坑系列)——Django前期工作
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前期工作的更多相关文章
- 2-STM32带你入坑系列(点亮一个灯--Keil)
1-STM32带你入坑系列(STM32介绍) 首先是安装软件 这一节用Kei来实现,需要安装MDK4.7这个软件,怎么安装,自己百度哈.都学习32的人了,不会连个软件都不会安装吧....还是那句话 没 ...
- gulp入坑系列(2)——初试JS代码合并与压缩
在上一篇里成功安装了gulp到项目中,现在来测试一下gulp的合并与压缩功能 gulp入坑系列(1)--安装gulp(传送门):http://www.cnblogs.com/YuuyaRin/p/61 ...
- 《神秘的程序员们》漫画26~28:《万年坑系列》 I、II、III(转)
26 <万年坑系列> I:那些令你憎恶的系统从何而来? 世界上总有一些令人憎恶的系统,而你却天天非用不可.这些系统的提供方们既不缺钱也不缺人,有的还很热衷于改版升级. 但为何升级完后,它们 ...
- 3-STM32带你入坑系列(自己封装点亮一个灯的库--Keil)
2-STM32带你入坑系列(点亮一个灯--Keil) 首先建一个stm32f103x.h的文件,然后 #include "stm32f103x.h" 还记得上一节 现在呢就是做一个 ...
- 1-STM32带你入坑系列(STM32介绍)
由于自己的物联网开发板上的单片机是用的STM32,但是有些朋友没有用过,所以我将用这块开发板,带着大家入门STM32 先介绍一下STM32,我是在大三下学期的时候开始接触STM32,当时是想做一个小车 ...
- MySQL填坑系列--Linux平台下MySQL区分大小写问题
大家好,我是软件大盗(道),下面开始我们的<MySQL填坑系列>. 笔者最近又在MySQL的边缘试探,然后,试探着,试探着就报错了. 书接上文,系统连接数据库时报错:找不到DB_TIMIN ...
- jmeter踩坑系列
1.踩坑系列一: 抓包出来有host的字段,放到jmeter里面一起请求就报错了,去掉就请求正常了 1.踩坑系列二: 从花瓶复制过去 的values 前面有空格,肉眼看起来没有
- 入坑第二式 golang入坑系列
史前必读: 这是入坑系列的第二式,如果错过了第一式,可以去gitbook( https://andy-zhangtao.gitbooks.io/golang/content/ )点个回放,看个重播.因 ...
- WebGL 踩坑系列-3
WebGL 踩坑系列-3 绘制球体 在 WebGL 中绘制物体时需要的顶点是以直角坐标表示的, 当然了,gl_Position 是一个四维的向量,一般将顶点赋值给 gl_Position 时,最后一维 ...
随机推荐
- Mybatis:缓存,动态SQL,注解SQL以及动态标签使用
1 转义字符 字符 转义 描述 < < 小于 <= <= 小于等于 > > 大于 >= >= 大于等于 <> <> 不等于 &a ...
- ASP.NET Core的实时库: SignalR -- 预备知识
大纲 本系列会分为2-3篇文章. 第一篇介绍SignalR的预备知识和原理 然后会介绍SignalR和如何在ASP.NET Core里使用SignalR. 本文的目录如下: 实时Web简述 Long ...
- 死磕 java集合之PriorityBlockingQueue源码分析
问题 (1)PriorityBlockingQueue的实现方式? (2)PriorityBlockingQueue是否需要扩容? (3)PriorityBlockingQueue是怎么控制并发安全的 ...
- 【Android Studio安装部署系列】十七、Android studio引用第三方库、jar、so、arr文件
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在Android开发过程,经常需要用到第三方库以及jar.so.arr文件,那么如何引用到项目中呢?下面简单介绍下. 引用第三方库 ...
- 第5章 令牌自省端点(Token Introspection Endpoint) - IdentityModel 中文文档(v1.0.0)
OAuth 2.0令牌自省的客户端库是作为HttpClient扩展方法提供的. 以下代码将引用令牌发送到内省端点: var client = new HttpClient(); var respons ...
- 模块使用:time、datetime、calendar、sys、os、os.path、normcase和normapath、random、json、pickle
## time:时间 时间戳(timestamp):time.time() 延迟线程的运行:time.sleep(secs) (指定时间戳下的)当前时区时间:time.localtime([secs] ...
- box-decoration-break属性
box-decoration-break属性可以指定元素片段在跨行.跨列或跨页(如打印)时候的样式渲染表现.默认情况下,元素的跨行或跨列渲染都是裁剪分割,各得一部分.举个例子<div class ...
- arcgis api 3.x for js 入门开发系列批量叠加 zip 压缩 SHP 图层优化篇(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- caffe安装教程(Ubuntu14+GPU+pycaffe+anaconda2)
caffe安装教程 本文所使用的底层环境配置:cuda8.cudnn6.OpenCV2.4.5.anaconda2(Python2.7).如使用其他版本的环境,如cuda,可安装自己的版本,但须在相应 ...
- 多标签分类的结果评估---macro-average和micro-average介绍
一,多分类的混淆矩阵 多分类混淆矩阵是二分类混淆矩阵的扩展 祭出代码,画线的那两行就是关键啦: 二,查看多分类的评估报告 祭出代码,使用了classicfication_report() 三,宏平均与 ...