02-Django基本流程

2018-10-21  本文已影响5人  王梓懿_1fbc

一、Django简介

Django是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站!

初次发布于2005年7月,并于2008年发布了第一个正式版本1.0。

官方文档: https://www.djangoproject.com/

二、Django特点

三、MVC模式

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

- Model(模型)
    应用程序中用于处理应用程序数据逻辑部分;
    通常模型对象负责在数据库中存取数据;
- View(视图)
    应用程序中处理数据显示部分;
    通常视图是依据模型数据创建的;
- Controller(控制器)
    应用程序中处理用户交互部分;
    通常控制器负责从视图中读取数据,控制用户输入,并向模型发送数据;

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

四、MTV模式

本质上MTV与MVC模式没有什么区别,也是各组件之间为了保持松耦合关系,只是定义上有些不同。

- Model(模型)
    负责业务对象与数据库对象(ORM)
- Template(模板)
    负责如何把页面展示给用户
- View(视图)
    负责业务逻辑,并在适当的时候调用Model和Template

Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template。

五、Django环境搭建

六、Django项目创建

- 新建Django项目:
    $ django-admin startproject projectName

- 目录层级说明:
    manage.py 一个命令行工具,可以使我们多种方式对Django项目进行交互
    projectName/__init__.py 一个空文件,告诉python这个目录被看做一个python包(有这个能称之为包)
    projectName/settings.py 项目的配置文件
    projectName/urls.py  项目URL声明(路由器)
    projectName/wsgi.py    项目与WSGI兼容的Web服务器入口(网关接口,通常用在现线上环境部署)

- 项目的运行:
    $ python manage.py runserver 
    $ python manage.py runserver 0.0.0.0:8000
    $ python manage.py runserver 0:8000  # 0.0.0.0简写方式

- settings.py项目配置文件
    BASE_DIR 项目根目录
    SECRET_KEY 秘钥
    DEBUG 调试的开启
    ALLOWED_HOSTS 允许访问的主机
    INSTALLED_APPS 安装的应用
    MIDDLEWARE 中间件
    ROOT_URLCONF 站点url配置
    TEMPLATES 模板
    WSGI_APPLICATION wsig应用
    DATABASES 数据库
    AUTH_PASSWORD_VALIDATORS 密码验证规则
    LANGUAGE_CODE 语言(中文: zh-hans)
    TIME_ZONE 时区 (中国时区: Asia/Shanghai)

- 站点管理的汉化版(在settings.py中替换以下内容即可)
    LANGUAGE_CODE = 'en-us' 替换 LANGUAGE_CODE = 'zh-Hans'
    TIME_ZONE = 'UTC' 替换 TIME_ZONE = 'Asia/Shanghai'

备注: Linux或Mac下,直接在终端中操作;而在Windows中在cmd中操作(开始 -> 搜索cmd)

Linux中输入tree可以看到具体的目录结构(树状)

七、创建应用

要先进入项目目录下,cd projectName 然后执行下面的命令:

$ python3 manage.py startapp appName

项目文件说明: 
  admin.py 站点配置
  models.py 模型
  views.py 视图

其实一个项目中可以创建多个应用;
sqlite是轻量级小型数据库(嵌入级数据库),在Django中默认使用的就是sqlite【一般在手机APP中都会使用到这个sqlite】

八、激活应用

settings.py文件中,将appName应用加入到INSTALL_APPS选项中.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'appName'   # 添加自己的应用
]

请求流程: 用户请求 -> urls -> views -> templates -> 用户响应 【从后往前写】

九、设计表结构

十、配置数据库

十一、定义模型

十二、数据库中生成对应表单

十三、数据库表单操作

- 查询所有数据
    Grades.objects.all()
    备注: 在模型类中,其实会有一个隐藏属性objects
    备注: 添加数据本质,就是创建一个模型类的对象实例

- 添加数据
    # 创建对象
    stu1 = Students()
    # 对象属性
    stu1.sname = '哈哈'
    # 保存
    stu.save()

- 查看数据(查看对象)
    Grades.objects.get(pk=1)
    Grades.objects.get(pk=2)

- 修改数据(修改对象属性)
    g = Grades.objects.get(pk=1)
    g.gboynum = 70  
    g.save()

- 删除数据
    g.delete()  # 物理删除,即数据库中表单数据被删除

- 关联对象
    # 获取到班级对象 (pk即是id那个字段)
    grade = Grades.objects.get(pk=2)
    # 添加学生对象
    stu2 = Students()
    stu2.sname = '李花花'
    stu2.ssex = '女'
    stu2.sage = 18
    stu2.sbrief = '你负责赚钱养家,我负责貌美如花.'
    stu2.sclass = grade
    stu2.save()

- 获取关联对象
    语法: 
        对象.关联的类名小写_set.all()
    例如: 
         grade.students_set.all()
    备注: 在班级中,想要获取某个班级中关联的学生信息

    需求: python04班级存在,   如何快速关联上快速创建对应学生?            # 可以直接通过以下方法创建,并且不需要调用保存 (但班级是python04而不是python05)
    # 其实就是直接grade和创建的学生对象关联起来了
    stu3 = grade.students_set.create(sname='王八',ssex='男',sage=20,sbrief='哈哈,咬我啊..')

十四、视图

- 方式一
def hello(request):
    return HttpResponse('hello')

- 方式二
def hello(request):
    return render(request, 'hello.html')

- 模板渲染(带参数)
def student(request):
    students = Student.objects.all()
    return render(request, 'students.html', context={'student_data': students})

十五、启动服务器

语法:
    python3 manage.py runserver ip:port
例如:
    python3 manage.py runserver
备注:
    IP可以不写,代表即是本机IP
    端口号默认是8000
    启动成功后,在浏览器可以看到”It worked!”
说明:
    这是一个纯python写的轻量级web服务器,仅仅在开发测试阶段中使用

作者:西门奄
链接:https://www.jianshu.com/u/77035eb804c3
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

上一篇 下一篇

猜你喜欢

热点阅读