首页 > 其他分享 >Django

Django

时间:2024-02-06 19:45:38浏览次数:30  
标签:models 数据库 Django User Model View

Django

一、MTV和MVC的区别

首先介绍Django的设计模式,也就是MTV,在这之前我们先了解MVC模式。

1、MVC设计模式

MVC是Model-View-Controller的缩写

  • Model代表数据存储层,是对数据表的定义和对数据的增删改查;
  • View代表视图层,是系统前段显示部分,它负责显示什么和如何进行显示;
  • Controller代表控制层,负责根据从View层输入的指令来检索Model层的数据,并在该层编写代码产生结果并输出。

MVC设计模式的请求与响应过程描述如下:

  • 用户通过浏览器向服务器发起request请求,Controller层接受请求后,同时向Model层和View层发送指令;
  • Model层根据指令与数据库交互并选择相应业务数据,然后将数据发送给Controller层;
  • View层接收到Controller的指令后,加载用户请求的页面,并将此页面发送给Controller层
  • Controller层接收到Model层和View层的数据后,将它们组织成响应格式发送给浏览器,浏览器通过解析后把页面展示出来

MVC的3层之间紧密相连,但又相互独立,每一层的修改都不会影响其他层,每一层都提供了各自独立的接口供其他层调用,MVC的设计模式降低了代码之间的关联性,增加了模块的可重用性,这就是MVC的设计模式。

2、MTV设计模式

  • Model:数据存储层,处理所有数据相关的业务,和数据库进行交互,并提供数据的增删改查;
  • Template:模版层具体来处理页面的显示;
  • View:业务逻辑层,处理具体的业务逻辑,它的作用是连通Model层和Template。

MTV设计模式的请求与响应过程的描述:

  • 用户通过浏览器对服务器发起request请求,服务器接收请求后,通过View的业务逻辑层进行分析,同时向Model层和Template层发送指令;
  • Model层与数据库进行交互,将数据返回给View层;
  • Template层接收到指令后,调用相应的模版,并返回给View层;
  • View层接收到模版与数据后,首先对模版进行渲染(即将相应的数据赋值给模版),然后组织成响应格式返回给浏览器,浏览器进行解析后最终呈现给用户。

二、Django模块讲解

1、ORM

ORM即对象关系映射,它是一种基于关系型数据库的程序技术。ORM允许使用类和对象对数据库进行操作。

Web开发中对数据库的操作是必不可少的,然而每种数据库的操作方式以及用法不尽相同。由于Django中ORM的存在,为我们操作不同种类的数据库提供了统一的方法,ORM适配了多种常用的关系型数据库。

ORM把类映射成数据库中的表,把类的一个实例对象映射成数据库中的数据行,把类的属性映射成表中的字段,通过对象的操作对应到数据库表的操作,实现了对象到SQL、SQL到对象转换过程。

Django把表模型定义为Model,他需要继承自django.db.models中的Model类,只要与数据表相关的操作,都需要继承这个类,同时ORM对于数据库的增删改查,也提供了一些简单的API,例如F查询等

2、Django中定义数据表

在创建好APP后

1、模型类

模型类本质上属于一个python类,只不过在Django中称之为模型类,它是由 django.db.models.Model 派生出来的子类,在Django中模型类是数据交互的接口,一个模型类代表数据库中的一张数据表,模型类中每一个类属性都代表数据表中的一个字段。

2、定义数据表

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=20)
    password = models.IntegerField()
    email = models.EmailField()

通过上述代码,一张用户数据表就创建完成了。

1、使用django包导入models模块;

2、使用class关键字对User表进行类定义,并继承models模块中的Models类;

3、上述数据表定义了用户姓名、密码和邮箱三种属性

3、ORM管理器对象

首先,大家需要知道每个继承 models.Model 的模型类,都会有一个objects对象被同时继承下来。这个对象就叫作“管理器对象”,数据库的增删改查可以用objects管理器对象来实现。

①:create插入数据

User.objects.create(username="Tom",password="root",email="[email protected]")

②:创建实例对象,然后调用save()方法保存

Obj=User(username="Tom",password="root",email="[email protected]")
Obj.name='Harry'
Obj.save()

对数据进行增删改查操作:

User.objects,all()#查询表中的所有记录
User.objects.filter(username_contains="T")#查询表中name含有“T”的所有记录
User.objects.get(username="Tom")#有且只有一个查询结果
User.objects.get(username="Tom").delete()#删除名字为Tom的记录
User.objects.get(username="Tom").update(username="Harry")#更新数据表的用户名为Harry

标签:models,数据库,Django,User,Model,View
From: https://www.cnblogs.com/wjx-2005-07-01/p/18010223

相关文章

  • 第六十三天 cookie, session与Django中间件
    一、cookie与session简介"""HTTP协议四大特性1.基于请求响应2.基于TCP、IP作用于应用层之上协议 3.无状态服务端无法识别客户端的状态 1.互联网刚开始兴起的的时候所有人访问网址都是一样的数据 服务端无法识别客户端问题不大 2.互联网发展淘宝、京东、阿里 服务端......
  • 【Django开发】到1开发美多商城项目第3篇:用户注册业务实现(附代码,已分享)
    本系列文章md笔记(已分享)主要讨论django商城项目相关知识。项目利用Django框架开发一套前后端不分离的商城项目(4.0版本)含代码和文档。功能包括前后端不分离,方便SEO。采用Django+Jinja2模板引擎+Vue.js实现前后端逻辑,Nginx服务器(反向代理)Nginx服务器(静态首页、商品详情页、uwsgi......
  • django 项目中,用户登录功能中间件的应用
    不是完整的Demo,简单记录下。在Django项目中,中间件(Middleware)是一个轻量级、底层的插件系统,用于全局修改Django的输入或输出。每个中间件是一个处理请求或响应的钩子,可以在视图执行之前或之后运行代码。对于用户登录功能,中间件可以用来处理多种任务,比如:验证用户的登录状态:在每......
  • 07django
    聚合查询MySQL聚合函数:max\min\sum\count\avgfromdjango.db.modelsimportMax,Min,Sum,Avg,Countres=models.Book.objects.aggregate(Max('price'))#总计print(res)#{'price__max':Decimal('56777.98')}'''没有分组也可......
  • 【Django开发】前后端分离美多商城项目第2篇:项目配置(附代码,文档已分享)
    本系列文章md笔记(已分享)主要讨论django商城项目开发相关知识。本项目利用Django框架开发一套前后端不分离的商城项目(4.0版本)含代码和文档。功能包括前后端不分离,方便SEO。采用Django+Jinja2模板引擎+Vue.js实现前后端逻辑,Nginx服务器(反向代理)Nginx服务器(静态首页、商品详情页......
  • 无涯教程-Django - Apache配置
    到目前为止,在无涯教程的示例中,已经使用了DjangodevWeb服务器,但是此服务器仅用于测试,不适合生产环境。一旦投入生产,您就需要一个真实的服务器,如Apache,Nginx等,在本章中讨论Apache。通过Apache为Django应用提供服务是通过使用mod_wsgi完成的。因此,第一件事是确保您已安装Apache和......
  • 【Django开发】前后端分离美多商城项目:项目准备和搭建(附代码,文档)
    本系列文章md笔记(已分享)主要讨论django商城项目开发相关知识。本项目利用Django框架开发一套前后端不分离的商城项目(4.0版本)含代码和文档。功能包括前后端不分离,方便SEO。采用Django+Jinja2模板引擎+Vue.js实现前后端逻辑,Nginx服务器(反向代理)Nginx服务器(静态首页、商品详情页......
  • django连接达梦
    问题1.django中连接数据库使用ORM框架,新增数据时,产生报错。问题描述:DatabaseError:[CODE:-2111]第1行附近出现错误:无效的列名[AAAAAAAAAAAAAAAAAR]查看数据库发现数据已经录入,问题出现在返回新增结果时候。通过查找发现是django_dmpython中自带文件调用方法时候的原生语......
  • django打包(linux)
    1.新建uvicorn文件(1)安装uvicorn插件pipinstalluvicorn(2)新建main.py文件fromuvicorn.serverimportConfig,Serverfromserver.asgiimportapplicationconfig=Config(app=application,host="0.0.0.0",port=8000,loop="asyncio",log_level=&q......
  • django打包(win)
    注意:1.打包工程(windows)1.安装pyinstallerpipinstallpyinstaller2.制作.spec文件pyi-makespec-Dmanage.py运行成功后可在项目所在目录下发现一个spec(规范)文件3.修改.spec文件把settings.py中apps里面的东西复制到manage.spec里面4.开始打包pyinstallermanage.......