Python进阶2:Django1-项目创建/自带项目管理/编写首页

文章目录

  • 1. 预备知识
    • 1.1 HTTP协议的认识
    • 1.2 Http请求中常见的请求方式
    • 1.3 MVC模式和MTV模式
  • 2. Django快速入门
    • 2.1 Django框架介绍
    • 2.2 Django添加数据库
    • 2.3 启用后台Admin站点管理
    • 2.3 创建一个应用
      • 2.3.1 创建第一个应用程序
      • 2.3.2 编写第一个视图函数
      • 2.3.3 路由规则

1. 预备知识

1.1 HTTP协议的认识

什么是HTTP 协议?
HTTP协议就是客户端和 服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。

  • HTTP是一个属于应用层的面向对象的协议
  • HTTP协议工作于客户端-服务端架构上
  • 浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求
  • Web服务器根据接收到的请求后,向客户端发送响应信息

为什么说Http 协议是无状态协议?
HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存

怎么解决Http 协议无状态协议?

  • 通过Cookie
  • 通过Session会话保存

1.2 Http请求中常见的请求方式

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

  • HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
  • HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
    Python进阶2:Django1-项目创建/自带项目管理/编写首页_第1张图片

1.3 MVC模式和MTV模式

MVC 模式
MVC 就是把Web应用分为模型(M),控制器©和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求。

Python进阶2:Django1-项目创建/自带项目管理/编写首页_第2张图片
MTV 模式
MTV模式本质上和 MVC 是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,在Python的世界中,基本(除了Pylons)都使用了 MVC 的变种 MTV (Model Templates View 模型-模板视图)。

Django 的MTV分别是值:

  • M 代表模型(Model): 负责业务对象和数据库的关系映射( ORM )。
  • T 代表模板 (Template):负责如何把页面展示给用户( html )。
  • V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。

除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第3张图片

2. Django快速入门

2.1 Django框架介绍

什么是框架?

  • 软件框架就是为实现或完成某种软件开发时,提供了一些基础的软件产品,
  • 框架的功能类似于 基础设施 ,提供并实现最为 基础的软件架构和体系
  • 通常情况下我们依据框架来实现更为复杂的业务程序开发
  • 二个字,框架就是程序的骨架

Python 中常见的框架有哪些?

  • 大包大揽 Django 被官方称之为完美主义者的Web框架。
  • 力求精简 web.py 和 Tornado
  • 新生代微框架 Flask 和 Bottle

Django 框架介绍

  • Django 是一个高级的Python Web框架,它鼓励快速开发和清洁,务实的设计。
  • 由经验丰富的开发人员构建,它负责Web开发的许多麻烦,因此您可以专注于编写应用程序,而
    无需重新创建轮子。
  • 免费的和开源的。
  • 被官方称之为完美主义者的Web框架

官方网址:https://www.djangoproject.com/

Django 框架的特点
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第4张图片
Django 的安装
pip install django==2.2

本人后续直接在pycharm新建Django项目时,pycharm会自动安装Django:
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第5张图片
创建完成:
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第6张图片

2.2 Django添加数据库

目录说明:

  • manage.py :一个命令行工具,可以使你用多种方式对 Django 项目进行交互
  • 内层的目录:项目的真正的Python包
  • _init_.py :一个空文件,它告诉Python这个目录应该被看一个Python包
  • settings.py :项目的配置
  • urls.py :项目的URL声明,网址路由配置
  • wsgi.py :项目与 WSGI 兼容的Web服务器入口,开启一个外部访问接口

在terminal中运行:python manage.py runserver
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第7张图片
在浏览器中查看:
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第8张图片
端口可以自己指定:python manage.py runserver 9999
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第9张图片
设置终端界面的自动补齐:
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第10张图片

添加SQLite:
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第11张图片

首次添加测试连接会提示安装驱动:
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第12张图片
下载驱动结束:
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第13张图片
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第14张图片Python进阶2:Django1-项目创建/自带项目管理/编写首页_第15张图片

2.3 启用后台Admin站点管理

  • 站点分为“内容发布(后台管理)”和“公共访问(前台管理)”两部分
  • “内容发布”的部分负责添加、修改、删除内容,开发这些重复的功能是一件单调乏味、缺乏创造力
    的工作。
  • 因此, Django 会根据定义的模型类完全自动地生成管理模块

Django 框架中有一个非常强大的应用功能: 自动管理界面。 常被Web平台管理者使用,去管理整个Web平台。
默认情况下,在 settings.py 配置文件中 INSTALLED_APPS 包含以下应用程序,为了后续的开发,默认这些应用程序都是包含在里面的。

应用程序 功能
django.contrib.admin 管理网站
django.contrib.auth 认证管理
django.contrib.contenttypes 内容类型的框架
django.contrib.sessions 会话框架
django.contrib.messages 消息框架。
django.contrib.staticfiles 管理静态文件的框架

(0). 数据库迁移

使用这些 Django 自带的应用程序,需要我们在数据库中创建一些数据表对应,然后才能使用它们。

python manage.py makemigrations 
python manage.py migrate

(1). 创建管理员用户

#按提示输入用户名、邮箱、密码 
python manage.py createsuperuser

Python进阶2:Django1-项目创建/自带项目管理/编写首页_第16张图片

  • 启动Django:python manage.py runserver 9999
  • 启动服务器,通过 “127.0.0.1:9999/admin” 访问,输入上面创建的用户名、密码完成登录
  • 进入管理站点,默认可以对 groups、users 进行管理

Python进阶2:Django1-项目创建/自带项目管理/编写首页_第17张图片
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第18张图片

(2). 管理界面本地化
编辑 settings.py 文件,设置编码、时区

LANGUAGE_CODE = 'zh-Hans' 
TIME_ZONE = 'Asia/Shanghai'

Python进阶2:Django1-项目创建/自带项目管理/编写首页_第19张图片
注:修改是实时的,不用再次重启

(3). 自定义模型加入后台管理
打开 bookApp/admin.py 文件,注册模型

from django.contrib import admin 
from models import Book 
admin.site.register(Book)

2.3 创建一个应用

2.3.1 创建第一个应用程序

Django 自带一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不
是创建目录。

  • 在一个项目中可以创建一到多个应用,每个应用进行一种业务处理
  • 创建应用的命令:
    python3 manage.py startapp bookApp
    Python进阶2:Django1-项目创建/自带项目管理/编写首页_第20张图片
文件名 功能
migrations 生成迁移脚本
_init_.py 在生成app时自动创建
admin.py 跟后台管理相关,比如增删改查
apps.py 一般不用修改
models.py 跟数据库有关,数据收集存入表中高等
test.py 测试文件
views.py 视图文件

2.3.2 编写第一个视图函数

编写该应用文件下的views.py文件:

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

#视图:对用户的请求(request)进行业务逻辑操作,最终返回给用户一个响应(response)
def index(request):
    print("用户请求的路劲:",request.path)
    return HttpResponse('首页信息')

2.3.3 路由规则

首先,设置一个首页文件,在bookApp文件夹下,编写views.py文件:
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第21张图片

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

#视图:对用户的请求(request)进行业务逻辑操作,最终返回给用户一个响应(response)
def index(request):
    print("用户请求的路劲:",request.path)
    return HttpResponse('首页信息')

在接受到访问请求时,程序会先从settings.py中读取根url指向的文件,即BookManager.urls:
在这里插入图片描述
在urls.py该文件中,会出现不同地址后缀名的导向文件,编辑此文件:
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第22张图片
此处输入完index时,可以alt + enter快捷导入相关函数
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第23张图片
在浏览器中访问:http://127.0.0.1:9999/index/
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第24张图片

但是,若应用过多,系统的url文件下的地址会过于庞大,所以建议的做法是:

在bookApp目录中创建一个 URLconf ,创建一个名为 urls.py 。如下所示:

# bookApp/urls.py 
from django.conf.urls import url 
from . import views 
urlpatterns = [ 
	# 当用户访问bookApp应用的主页时, 执行视图函数index,反向根据名称获取url地址; 
	url(r'^$', views.index, name='index'), 
]

Python进阶2:Django1-项目创建/自带项目管理/编写首页_第25张图片

根据配置文件 BookManage/settings 可知路由查找的主文件是 BookManage/urls.py , 因此在该文件添加一条 url 规则:

# BookManage/urls.py
from django.conf.urls import url 
from django.contrib import admin 
from django.urls import path, include

urlpatterns = [ 
	path('admin/', admin.site.urls), 
	# 当用户访问的url地址以book开头, 请访问bookApp.urls这个url配置文件进行匹配并执行对应 的视图函数. 	
	url(r'^book/', include('bookApp.urls')), 
]

Python进阶2:Django1-项目创建/自带项目管理/编写首页_第26张图片
结果:
Python进阶2:Django1-项目创建/自带项目管理/编写首页_第27张图片

注:

  • include()函数允许引用其他 URLconfs
  • Django中修改文件不需要重启,添加/新建文件需要重启

此外,编辑下index文件:

    return HttpResponse('

首页信息

')

Python进阶2:Django1-项目创建/自带项目管理/编写首页_第28张图片

过程回顾:

  1. 用户访问http://127.0.0.1:9999/book/,访问网址为127.0.0.1下的9999端口,请求指向book结尾的路由;
  2. BookManager下的wsgi.py(外部服务网关接口)负责接收用户的请求,会在主目录下的urls.py中寻找是否有该目录;
  3. urls.py文件中包含book路径,则去找其对应的视图函数(否则报错);进一步发现包含book的地址都在bookApp的urls文件内;
  4. 进入bookApp文件内的urls文件,因为用户请求的book后面没有其他地址,则执行该文件下的views中的index函数;
  5. 执行index函数,在网页上打印函数执行效果

你可能感兴趣的:(python,Django)