Django开发知识(一)

Author:Sinpei
Date: 2018-6-12
GitHub:https://github.com/sinpeilee/MyHome
Email:sinpeilee@163.com


Django简介


Django是一个开放源代码的Web应用框架,由Python写成。采用了MVT的软件设计模式,即模型Model,视图View和模板Template。详见官网
Django发布于2005年7月,最初是被开发用于管理劳伦斯出版集团旗下的以新闻内容为主的网站的,即CMS(内容管理系统)软件。

MVC模式简介


MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。
核心思想:解耦
专业人员可以通过自身的专长分组:

  • 控制器(Controller)- 负责转发请求,对请求进行处理。
  • 视图(View) - 界面设计人员进行图形界面设计。
  • 模型(Model)-程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
MVC说明

MVT模式简介


严格来说,Django的模式应该是MVT模式,本质上和MVC没什么区别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同。
Model: 负责业务与数据库(ORM)的对象。
View: 负责业务逻辑并适当调用Model和Template。
Template: 负责把页面渲染展示给用户。
Django框架的核心除了上述3项,还有一个基于正则表达式的URL分发器;一个轻量级的、独立的Web服务器,用于开发和测试;一个表单序列化及验证系统,用于HTML表单和适于数据库存储的数据之间的转换;一个缓存框架,并有几种缓存方式可供选择;中间件支持,允许对请求处理的各个阶段进行干涉;内置的分发系统允许应用程序中的组件采用预定义的信号进行相互间的通信;一个序列化系统,能够生成或读取采用XML或JSON表示的Django模型实例;一个用于扩展模板引擎的能力的系统。

Django安装(Mac OS)


1.安装虚拟环境

$ pip install virtualenv

virtualenv使用场景:当开发成员负责多个项目的时候,每个项目安装的库又是有很多差距的时候,会使用虚拟环境将每个项目的环境给隔离开来。当然除了virtualenv可以起到隔离环境的作用,还有其他技术方案来实现,而且上线流程简单,大大减轻运维人员的出错率,比如每一个项目使用一个docker镜像,在镜像中去安装项目所需的环境,库版本等等


2.安装env环境

# env代表创建的虚拟环境的名称
$ virtualenv --no-site-packages -p [PATH] env
# 默认python版本安装
$ virtualenv --no-site-packages env

3.进入/退出 env

# 先到env/bin下找到activate
$ cd /env/bin
$ source activate
$ deactivate

4.pip的使用

# 查看虚拟环境下安装的所有的包
$ pip list

# 查看虚拟环境中通过pip安装的包
$ pip freeze

# 安装django
$ pip install django==1.11

5.在虚拟环境下到自定目录下创建Django项目

$ django-admin startproject helloworld

6.启动Django项目

# port端口自定义
$ python manage.py runserver ip: port

7.创建app

#appname 自定义
$ python manage.py startapp appname

并在项目setting.py中添加app信息
INSTALLED_APPS = [
    'appname',
]

8.Django项目结构与基础设置

Django项目结构

Django项目创建好了需要进行一些基础配置:

  • 修改项目时区和语言
#修改主项目下的settings.py文件
#修改项目语言为中文
LANGUAGE_CODE = 'zh-hans'
#修改项目时区
TIME_ZONE = 'Asia/Shanghai'
  • 配置数据库
#在settings.py中找到DATABASES
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': 'xxx.xxx.xxx.xxx',
        'USER': 'root',
        'PASSWORD': '*******',
        'PORT': '3306',
        'NAME': 'helloworld'

    }
  • app目录下单独创建urls
#这样做,将单一职责原则进行到底,每个app都有自己的url,最后在主项目urls.py的urlpatterns中加入一下声明即可
url('', include('appname.urls'))


8.项目结构简介

项目结构
_ _ init _ _ .py: 初始化,配置py的初始化文件
settings.py:项目配置文件
urls.py:路由配置文件
wsgi.py: 网关

app是项目中一个功能模块的具体实现。
_ _ init_ _ .py:app初始化
apps.py: settings.py里面注册app的时候需要使用到。一般不推荐这样使用
from app.apps import AppConfig

AppConfig.name
models.py: 写模型的地方
views.py: 写处理业务逻辑的地方


9.迁移数据库

#在工作目录下的__init__.py文件中输入以下完成驱动加载
import pymysql
pymysql.install_as_MySQLdb()

  • 定义模型
    重要概念:模型,表,属性,字段
    一个模型类在数据库中对应一张表,在模型类中定义的属性,对应模型对照表中的一个字段
#创建学生模型类
class Student(models.Model):
    name = models.CharField(max_length=20)
    sex = models.BooleanField()

    class Meta:
        db_table = 'stu'

  • 调用方法
    在views.py中对上述类进行调用
def add_student(request):
    stu = Student()
    stu.name = '李四'
    stu.sex = 0
    stu.save()
    return HttpResponse('添加成功')
  • 配置app的url
from django.conf.urls import url

from student import views

urlpatterns = [
    url(r'addstu/', views.add_student)
]
  • 迁移数据库
#生成迁移文件
$ python manage.py makemigrations
#执行迁移生产数据库
$ python manage.py migrate
#注意:生成迁移文件的时候,并没有在数据库中生成对应的表,而是执行migrate命令之后才会在数据库中生成表

10.ORM

ORM(Objects Relational Mapping)对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。可以简单理解为翻译机。

ORM效果图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容