个人博客,记录知识防止遗忘
diango(一)基础理论介绍
diango(一)基础理论介绍

diango(一)基础理论介绍

django是一个基于python的web框架。
相比于另一个基于python的web框架 Flask,django更加全面,功能更加强大。
Django似乎更多用来开发常规网站,而Flask经常用来开发API。

内容大纲

1 django的MTV架构

要说django的MTV,就不得不说网站框架的MVC结构,因为django本身也是基于MVC架构(自称为MTV),具体如下图:

M –> Model 俗称模型,其实就是控制数据库表结构的东西
V –> View 俗称视图,其实就是负责具体前端输出的东西,例如 颜色、文字、表单等
C –> Controller 控制器,其实就是具体负责实现的功能,例如 加减乘除、增删改查等

为了方便记忆,可以简单理解为: M是数据库表,V是前端页面,C是后端代码

2 django的工作流程

作为一个web框架,django也主要围绕 请求 和 响应 来工作,下图是大致的工作流程。


django中主要有4个文件

2.1 route

一般位于工程目录下的工程同名目录中,例如
project_1/project_1/urls.py

主要用于定义路由,也就是定义 某路径的请求该去往哪里,例如:

from app_1 import views

urlpatterns = [
    path('index/', views.index),
]

上面代码的作用是:凡是uri匹配到 /index,都将该请求交给app_1中 view.py定义的index函数来处理,
至于view,就需要下面来定义了

2.2 view

一般位于工程目录下的应用目录中,例如
project_1/app_1/views.py

主要用于接收urls路由过来的请求,并对该请求进行处理

views是整个框架的大脑,很多后端逻辑都要放在这里进行处理

def index(request):
    return render(request, 'index.html')

上述代码的作用是: 将urls路由过来的请求(/index)直接交由rander函数进行渲染

2.3 model

一般位于工程目录下的应用目录中,例如
project_1/app_1/models.py

主要用于定义数据库相关的东西,支持ORM(将编程语言翻译成sql语句)
其实就是做一层封装。让我们简单方便地实现数据库的增删改查操作,不用再去花时间思考如何编写、拼接sql语句

例如:

from django.db import models
# Create your models here.

class cal(models.Model):
    value_a = models.CharField(max_length=50)
    value_b = models.FloatField(max_length=50)
    sum_ab  = models.CharField(max_length=50)

上述代码的作用是:
创建一个新的数据表,表名为cal,并定义3个字段
(实际中cal会默认添加一个前缀,前缀是当前的app应用名)

2.4 template

默认不会生成,需要手动创建此目录。
一般位于工程目录下的应用目录中,例如

主要用于存放前端页面,方便使用。
此外views经常会传递一些变量给html页面,此时需要用到rander函数,例如

def Cal_list(requst):  
    data = cal.objects.all()
    return render(requst, 'cal_list.html', context={'data': data})

上述代码的作用是:views 查询model 中定义的数据表cal的全部数据,将结果存入 ‘data’
随后用rander函数将 ‘data’ 和请求发给cal_list.html进行渲染
最后的结果作为http响应发往用户游览器展示

rander是常用的函数,其详细用法可以参考官方文档
https://docs.djangoproject.com/zh-hans/3.0/topics/http/shortcuts/#django.shortcuts.render

django大致的工作流程就是这样,具体的实例可以参考我的其它博文

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注