Django的基本运用(垃圾分类)

title: 利用Django实现一个能与用户交互的初级框架
author: Sun-Wind
date: September 1, 2021 Django实现基本的框架

此框架的功能是搭建服务器,使得服务器和客户端交互

此框架可以接受客户端的请求,并返回根据请求所得到的结果
这里列举一个垃圾识别分类的例子

Django简介

Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。
使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务

MVC模型

Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。

MVC

MVT模型

Django 的 MTV 模式本质上和 MVC 是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django 的 MTV 分别是指:
M 表示模型(Model):编写程序应有的功能,负责业务对象与数据库的映射(ORM)。
T 表示模板 (Template):负责如何把页面(html)展示给用户。
V 表示视图(View):负责业务逻辑,并在适当时候调用 Model和 Template。
除了以上三层之外,还需要一个 URL 分发器,它的作用是将一个个 URL 的页面请求分发给不同的 View 处理,View 再调用相应的 Model 和 Template,MTV 的响应模式如下所示:
简易图:

MVT

创建垃圾分类项目

注意:博主使用的是windows系统,不同系统使用的指令不一样
<django-admin startproject rub>

使用以上指令创建项目
此时Django会形成一个项目框架,以下会一一解释说明

rub:项目的容器

manage.py:作为一个实用的命令行工具,能够让你和项目进行交互

init.py:此空文件告诉python是一个python包

asgi.py: ASGI兼容的web服务器入口,以便运行项目

settings.py:该项目的配置,比如数据库配置,访问配置,链接配置

urls.py:该项目的url(路由)声明

wsgi.py: WSGI兼容的web服务器入口,以便运行项目

运行我们的项目

<py manage.py runserver 0.0.0.0:8000>
通过以上命令来运行我们的项目
此命令需要在rub文件夹里命名
其中0.0.0.0能够让局域网的其他电脑访问到我们的网站,8000是端口号,也可以改成其他端口号,如果不写端口号默认是8000
此时命令行会生成对应的本地服务器的http,访问后如下所示

Django


如果无法访问,请查看是否是端口占用的问题,可以考虑更换一个端口号

悄悄说一句,8000端口占用多半是酷狗音乐什么的[]( ̄▽ ̄)*

创建app

Django规定,如果要使用模型层,必须要创建一个app(虽然我们这个项目里面不用,但还是教一下)
<django-admin.py startapp app>
然后Django就会自动生成app的框架
<py manage.py migrate> # 创建表结构
< py manage.py makemigrations app> # 让 Django 知道我们在我们的模型有一些变更
<py manage.py migrate app> # 创建表结构
运行以上指令可以完成数据库表单的创建
这里只是额外引入一下,实际上本项目实现比较简单,可以无需使用

配置路由

路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序,并返回处理结果,也就是 URL 与 Django 的视图建立映射关系。
我们在rub的主路由中添加如下配置
<path('',include('app.urls')),>
利用include语句可以将app的路由映射进来,这样我们直接配置app的路由即可
include指的是路由的分发
Django 项目里多个app目录共用一个 urls 容易造成混淆,后期维护也不方便。
使用路由分发(include),让每个app目录都单独拥有自己的 urls。
在app的路由当中加入如下的配置
< path('',views.index,name = 'index'),>
<path('upload1',views.upload1,name = 'upload1'),>

path方法

Django path() 可以接收四个参数,分别是两个必选参数:route、view 和两个可选参数:kwargs、name。

route:字符串,表示URL规则,与之匹配的URL会执行第二个参数view

view:用来执行匹配的URL请求

kwargs:字典参数(通过此参数可以实现网页变量的解析操作,后续会有解释)

name:用来反向获取URL

视图层

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpdzy.html