Django框架的使用

一,创建基本项目

创建项目

  1. # web是项目名称或者称为项目目录
  2. django-admin startproject web
  3. # 会在执行命令的当前目录中 创建 web项目目录
  4. web
  5. ├── manage.py # 项目管理文件 单入口文件
  6. └── web # 和项目同名的目录/ 存放于项目相关的配置文件 等
  7. ├── __init__.py # 包初始化文件
  8. ├── settings.py # 项目的配置文件
  9. ├── urls.py # 项目的根路由文件
  10. └── wsgi.py # 通用网关接口服务文件/后期上线部署到专业的HTTP服务器时需要用到

启动服务

  1. # 终端切换到 web/manage.py目录中并执行以下命令
  2. python3 manage.py runserver
  3. '''
  4. (venv) MacBook-Pro:web yc$ ls
  5. manage.py web
  6. (venv) MacBook-Pro:web yc$ python3 manage.py runserver
  7. Watching for file changes with StatReloader
  8. Performing system checks...
  9. .....
  10. December 28, 2019 - 05:55:33
  11. Django version 2.2.9, using settings 'web.settings'
  12. Starting development server at http://127.0.0.1:8000/
  13. Quit the server with CONTROL-C.
  14. '''

访问服务

在浏览器的地址栏 访问 url http://127.0.0.1:8000/

成功后会在浏览器中看到默认页面

2.Django框架的使用 - 图1

二,创建应用

执行命令创建自定义应用

  1. # 在 manage.py 同级目录下 执行 以下命令 创建应用
  2. python3 manage.py startapp home
  3. # 应用创建成功后,会在mamage.py 的同级目录中创建一个 应用文件夹
  4. web/
  5. ├── db.sqlite3 # Django框架默认使用数据库文件
  6. ├── home # 创建的自定义应用
  7. ├── __init__.py
  8. ├── admin.py # django框架自带后台模块配置文件
  9. ├── apps.py
  10. ├── migrations
  11. └── __init__.py
  12. ├── models.py # 模型文件
  13. ├── tests.py # 测试文件
  14. └── views.py # 视图函数文件
  15. ├── manage.py # 项目管理文件 所以的项目指令都需要manage.py
  16. └── web # 和项目同名的目录/ 存放于项目相关的配置文件 等
  17. ├── __init__.py # 包初始化文件
  18. ├── settings.py # 项目的配置文件
  19. ├── urls.py # 项目的根路由文件
  20. └── wsgi.py # 通用网关接口服务文件/后期上线部署到专业的HTTP服务器时需要用到

定义视图函数 输出 Hello World

编辑 web/home/views.py文件,定义视图函数

  1. from django.shortcuts import render
  2. from django.http import HttpResponse
  3. # Create your views here.
  4. # 定义 视图函数。输出hello world
  5. def hello(request):
  6. return HttpResponse('Hello World!...')

给视图函数定义访问路由

在 web/home/ 目录中 创建 urls.py文件. 并定义路由

  1. # web/home/urls.py
  2. from django.urls import path
  3. from . import views
  4. urlpatterns = [
  5. path('abc/', views.hello),
  6. ]

需要在根路由中配置当前应用的路由

修改 web/web/urls.py 文件,把创建的应用中的路由 定义到 根路由中

  1. from django.contrib import admin
  2. from django.urls import path,include
  3. urlpatterns = [
  4. path('admin/', admin.site.urls),
  5. path('',include('home.urls'))
  6. ]

启动服务,浏览器访问测试

  1. # 启动服务。web/manage.py 同级目录中执行
  2. python3 manage.py runserver

浏览器访问会得下面的结果,就是报 404 错误

2.Django框架的使用 - 图2

问题是由于访问的URL 路径和项目中的url配置路径不一致导致的

解决问题有两个方案:

1.改变浏览器的访问路径 访问的URL。http://127.0.0.1:8000/abc/

2.改变应用中的路由配置 由原来的 path(‘abc/‘, views.hello), 改为 path(‘’, views.hello),

正常的访问结果:

2.Django框架的使用 - 图3

流程总结:

  1. 浏览器访问的流程
  2. 1. 用户在浏览器中输入 请求的URL地址 http://127.0.0.1:8000/abc/
  3. 2. 用户的请求会经过wsgi通用网关接口,走到项目的根路由中
  4. 3. 项目中的 根路由 web/web/urls.py 文件 会解析用户的请求地址 abc/
  5. 4. 根路由解析后会交给 应用中字路由进行再次解析: web/home/urls.py
  6. 5. 应用中的子路由 在根据请求的地址 找到对应的视图函数
  7. 6. 视图函数 views.py里面的。hello函数会执行
  8. 7. hello函数 返回了一个 响应内容 给浏览器
  9. 代码角度来解读:
  10. 1. views.py文件中的 hello视图函数 定义了 响应的内容。hello world
  11. 2. 应用中的子路由决定如何解析或执行 对应的hello这个视图函数
  12. 3. 项目中的根路由负责接收用户请求的url并找到对应的 应用去 执行
  13. 4. wsgi负责接收和响应用户的请求

三, 概念解析

路由,视图,

路由:

  • 路由就是建立请求路径和执行对应视图函数的 映射关系。
  • 要先确定根路由,并依次匹配请求的规则
  • 如果匹配到就执行对应的视图函数
  • 如果没有匹配到或者出现其它问题,则会抛出对应的错误信息

视图:

  • 视图函数(或简称视图)只是一个Python函数,它接受Web请求并返回Web响应。
  • 简单理解就是专门接收用户的请求,并执行业务逻辑,之后给用户响应内容。

四,如何使用模板文件返回 Hello World

  1. 创建模版文件目录
    在项目中创建 templates 文件夹存放模版文件 manage.py文件同名目录中创建

  2. 配置Django的模版引擎
    修改 web/web/settings.py文件的 模版引擎配置

    1. TEMPLATES = [
    2. {
    3. 'BACKEND': 'django.template.backends.django.DjangoTemplates',
    4. 'DIRS': [os.path.join(BASE_DIR,'templates')],# 修改此处的路径
    5. 'APP_DIRS': True,
    6. 'OPTIONS': {
    7. 'context_processors': [
    8. 'django.template.context_processors.debug',
    9. 'django.template.context_processors.request',
    10. 'django.contrib.auth.context_processors.auth',
    11. 'django.contrib.messages.context_processors.messages',
    12. ],
    13. },
    14. },
    15. ]
  1. 创建需要使用的模版文件 。html文件
    Web/templates/hello.html
    1. <!DOCTYPE html>
    2. <html >
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Document</title>
    6. </head>
    7. <body>
    8. <h1 style="color:red;">Hello. World </h1>
    9. </body>
    10. </html>
  1. 在视图函数中调用模版文件即可 ```python from django.shortcuts import render from django.http import HttpResponse

    Create your views here.

定义 视图函数。输出hello world

def hello(request):

# 返回。响应字符
# return HttpResponse('Hello World!...')

# 返回 模版文件
return render(request,'hello.html')

```

  1. 重新启动服务,并用浏览器进行访问
    2.Django框架的使用 - 图4

五,框架的设计思想,设计模式

MVC 设计模式。设计细想

MVC是程序的架构设计,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面

MVC的核心思想:程序的解藕

M ==> Model 模型 表示为 数据层 专门负责数据相关操作

V ==> Views 视图 表示为 视图层 专门负责页面的展示(模版)

C ==> Controller 控制器 表示为 逻辑层 专门负责项目中的业务逻辑部分

MVT

M ==> Model ==> 模型 ==> 数据层

V ==> Views ==> 视图 ==> 逻辑层

T ==>Template ==> 模版. ==> 视图层