Django框架简介

news2024/11/24 4:49:02

文章目录

  • Django框架介绍
    • MVC与MVT模型
      • MVC
      • MTV
    • 版本问题
    • 运行django注意事项
  • Django的下载与基本命令
    • 下载Django
      • 方式一:在命令界面使用pip安装
      • 方式二:使用pycharm安装
    • Django的基础命令
      • 命令行操作
      • pycharm操作
  • Django项目命令行操作与Pycharm操作的区别
  • 应用
  • Django目录结构
  • Django小白必会三板斧

Django框架介绍

  • Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。

  • Django 是一个开放源代码的 Web 应用框架,由 Python 编写的。

  • Django 遵守 BSD 版权,初次发布于 2005 年 7 月, 并于 2008 年 9 月发布了第一个正式版本 1.0

  • Django 采用了 MVT 的软件设计模式,即模型(Model),模板(Template) 和 视图(View)

MVC与MVT模型

MVC

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

在这里插入图片描述

MTV

Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:

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

除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:

在这里插入图片描述
一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。


版本问题

	django1.x: 以前的老项目在使用,它跟2.x的版本区别不是特别大
    django2.x:主流的项目使用的都是2.x的版本,有一点区别的跟1.x
    django3.x: 新版本了,现在有不少的项目确实在选择3.x的版本
    
	'比如:drf框架要求django的版本必须是2以上,不支持1的版本'
	
	django的版本要和你的Python的版本要匹配,django3用个2.7版本,不行
	django2----->python3.6以上
	django1----->python3.6

运行django注意事项

	1.django项目中所有的文件名目录名不要出现中文
	2.计算机名称尽量不要出来中文
	3.一个pycharm只开一个Django项目,不要一个窗口打开很多个项目(不要嵌套和叠加)
	4.不同版本的python解释器配合不同版本的django可能会出现问题

	'下图根据官网展示 LTS表示官方还在维护的版本,没有表示LTS表示不会更新维护'

在这里插入图片描述


Django的下载与基本命令

下载Django

方式一:在命令界面使用pip安装

	pip3 install django             默认最新版
	pip3 install django==版本号      指定版本
		pip3 install django==2.2.22
	pip下载模块会自动解决依赖问题(会把关联需要用到的模块一下下载)

方式二:使用pycharm安装

File | Settings | Project: Pycharm_Project_Test | Python Interpreter

在这里插入图片描述

Django的基础命令

命令行操作

		1.验证django是否下载成功
			cmd终端输入django-admin
		2.创建django项目
			django-admin startproject 项目名
		3.启动django项目
			1.先切换到项目目录下
				cd 项目名
		2.执行启动目录
			python38 manage.py runserver(不加ip:port默认是使用Django的端口号8000)
			python38 manage.py runserver ip:port(这种是自己设定)
		4.访问django服务端
			浏览器直接访问
		5.创建app应用
			"""
			django框架类似于是一个空壳子 给你提供所需的资源
			至于到底要写哪些功能 需要通过创建app来划分
			eg:django初始项目可以看成是一所大学
			app就相当于是大学里面的各个学院
			"""
			python38 manage.py startapp 应用名
			
	'在启动django项目的时候 一定要确保一个端口只有一个项目(默认端口8000)'

pycharm操作

1.创建django项目

File---->New Project----->Django----创建文件路径

在这里插入图片描述
点击this window,遵循一个pycharm窗口只打开一个django项目
在这里插入图片描述


2.创建应用app在这里插入图片描述
在创建的过程中可能会出错,是因为Django的版本过于低,Python解释器版本过于搞造成的,只需要在配置文件中更改下图的所指示的代码即可。代码:os.path.join(BASE_DIR,‘templates’)
在这里插入图片描述

更改完配置文件后,重新输入创建应用的命令即可创建成功在这里插入图片描述

最后把应用名称加入到配置文件中相应的位置即可
在这里插入图片描述


3.启动Django项目,在控制台输入启动命令后到浏览器进行输入对应的ip和端口号即可访问了

在这里插入图片描述

Django项目命令行操作与Pycharm操作的区别

		1.命令行不会自动创建templates文件夹
		2.命令行不会在配置文件编写关于templates文件夹的配置
			'DIRS': [os.path.join(BASE_DIR, 'templates')]
		3.pycharm自动创建的第一个应用会自动注册到配置文件中
		4.针对db.sqlite3文件不用去在乎它有没有创建 只要运行了django会自动出来

在这里插入图片描述
在这里插入图片描述

应用

Django框架就类似于是一所大学,一所大学也要有二级学院。
应用就类似于是二级学院,一个Django框架至少要有一个应用
django里面的app类似于某个具体的功能模块:

Django目录结构

	django项目目录
		项目同名文件夹
		__init__.py  		很少用 主要做一些冷门配置
		settings.py    		项目的全局配置文件
		urls.py		   		路由文件,写地址的后缀和视图函数的对应关系
		wsgi.py		 		django服务 基本不用
		manage.py			django的启动文件、入口文件
		templates文件夹		模版文件,存储项目所需的html文件
	 	
		应用名文件夹(可以有多个)
		migrations文件夹  	orm相关(数据库打交道的记录)
		__init__.py  		很少用 主要做一些冷门配置
		admin.py		 	django自带的后台管理系统
		apps.py				创建应用之后用于应用的注册
		models.py			模型层,存储与数据库表相关的类
		tests.py			自带的测试文件
		views.py		 	视图文件。存储业务相关的逻辑代码(函数、类)
		db.sqlite3			自带的小型数据库
		
		urls.py				路由层
		views.py			视图层
		templates			模板层
		models.py   		模型层

Django小白必会三板斧

	frpm django.shortcuts import render,HttpResponse,redirect

	HttpResponse       返回字符串类型的数据
	render             返回HTML页面并且支持传值
	redirect           重定向

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1185811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Qt之QAssociativeIterable】使用

介绍 QAssociativeIterable类是QVariant中一个关联式容器的可迭代接口。这个类允许多种访问在QVariant中保存的关联式容器元素的方法。如果一个QVariant可以转换为QVariantHash或QVariantMap&#xff0c;那么QAssociativeIterable的实例可以从中提取出来。 QHash<int, QSt…

【工具】旋转图片-数据集制作工具, 开源!

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] Github&#xff1a;https://github.com/1061700625/small_tools_v2 之前做了一个下载百度的旋转图片验证码的工具(多进程下载百度旋转验证码图片-制作数据集)&#xff0c;那么拿到了图片数据&#xff0c;就需要手…

还不知道IP地址不够用是怎么被大牛们解决的?(NAT/NAPT, IPv6, DHCP)

文章目录 前言1. DHCP网络管理协议什么是 DHCPDHCP 两种分配机制 2. NAT网络地址转换协议什么是 NATNAT 技术使用NAT网络设备间如何通信两个内网设备相互通信不同内网中的设备相互通信NAT IP转换过程 NAPT 技术NAT 技术的缺陷 3. IPv6 协议什么是 IPv6 总结 前言 在之前的文章…

【教3妹学编程-算法题】2915. 和为目标值的最长子序列的长度

3妹&#xff1a;2哥&#xff0c;今日都立冬了&#xff0c; 可是天气一点都不冷。 2哥 : 立冬了&#xff0c;晚上要不要一起出去吃饺子&#xff1f;&#x1f95f; 3妹&#xff1a;好呀好呀&#xff0c;2哥请吃饺子喽 2哥 : 歪歪&#xff0c;我说的是一起出去吃&#xff0c;没说我…

[Java/力扣160]相交链表

这道题的关键是&#xff0c;使两个链表上的指针同时到达相交点处 方法一&#xff1a;分别遍历两个链表&#xff0c;得到其长度。然后先让较长的链表上的指针走“两链表长度之差”。然后两指针分别一步一步走&#xff0c;就能同时到达相交点处。 方法二&#xff1a;让 p1 遍历…

SHCTF-校外赛道

SHCTF-校外赛道 [WEEK1]babyRCE 1 (1)more:一页一页的显示档案内容2 (2)less:与 more 类似&#xff0c;但是比 more 更好的是&#xff0c;他可以[pg dn][pg up]翻页3 (3)head:查看头几行4 (4)tac:从最后一行开始显示&#xff0c;可以看出 tac 是 cat 的反向显示5 (5)tail:查看…

Android内存回收机制、GC算法及内存问题分析解决

Android内存回收机制、GC算法及内存问题分析解决 在Android开发中&#xff0c;Java内存回收和垃圾收集&#xff08;GC&#xff09;机制是确保应用程序高效运行的关键部分。针对不同对象存活率&#xff0c;Android平台采用了引用计数算法和可达性分析法来判定对象的可回收性&am…

命名管道原理(和匿名管道的对比),mkfifo(命令行,函数),命名管道模拟实现代码+与多个子进程通信代码

目录 命名管道 引入 原理 和匿名管道的对比 使用 -- mkfifo 命令行指令 创建 文件类型p 使用 函数 函数原型 模拟实现 头文件 客户端代码 服务端代码 运行情况 模拟实现 -- 与多个子进程 介绍 服务端代码: 运行情况 命名管道 引入 匿名管道只能用于父子进程…

一篇文章带你搞懂DNS全流程

1.DNS与CDN DNS是域名系统的缩写&#xff0c;它是一种将域名和IP地址相互映射的分布式数据库&#xff0c;能够使人更方便地访问互联网。 DNS的主要功能是将域名解析为IP地址。当你在浏览器中输入一个网址时&#xff0c;浏览器会向DNS服务器发送一个请求&#xff0c;以获取该网…

5G-A 商用加速,赋能工业互联网

2019 年 6 月&#xff0c;中国工业和信息化部发放 5G 商用牌照。同年 10 月&#xff0c;三大运营商公布 5G 商用套餐&#xff0c;11 月 1 日正式上线 5G 商用套餐&#xff0c;标志中国正式进入 5G 商用新纪元。今年是 5G 商用的第五年&#xff0c;在当前数字经济蓬勃发展的催化…

什么是屏蔽机房?

屏蔽机房是一种用于保护数据中心设备的安全和可靠的措施。通过屏蔽机房&#xff0c;可以防止电磁干扰、防止物理入侵以及提供更好的隔离和安全性。下面是一些关于屏蔽机房的常见做法&#xff1a; 电磁屏蔽&#xff1a;为了防止电磁干扰对数据中心设备的影响&#xff0c;可以在屏…

代码随想录算法训练营第15天|102. 二叉树的层序遍历226. 翻转二叉树101. 对称二叉树

JAVA代码编写 102. 二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9…

11.8旧有报错与修改

我将uart_done&#xff08;出问题的信号&#xff09;的变量类型设为reg了&#xff0c;也就是我是reg uart_done这个信号的&#xff0c;这样做是错误的&#xff0c;哪怕你在接收模块确实定义的是reg类型&#xff0c;但是在顶层模块的时候&#xff0c;它可以视为是一条单纯的线而…

PPO算法是什么?

ppo称作近邻策略优化算法&#xff0c;是典型的Actor- critic算法&#xff0c;即以两个网络为输入&#xff0c;并可以同时更新两者参数&#xff1b;在RLHF中我们更关注actor网络的更新方式&#xff0c;其损失函数由三部分构成&#xff0c;分别是&#xff1a;1&#xff0c;新旧状…

二进制搭建及高可用 Kubernetes v1.20

目录 一、实验规划&#xff1a; 二、操作系统初始化配置&#xff1a; 1. 关闭防火墙 selinux&#xff1a; 2. 关闭swap分区&#xff1a; 3. 根据规划设置主机名&#xff1a; 4. 所有主机添加hosts&#xff1a; 5. 调整内核参数: 6. 时间同步: 三、部署 etcd 集群&#xff1a…

netty (二) netty原理详解

netty高性能架构设计 netty 写一个简单的demo 服务器端 package com.atguigu.netty.simple;import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import …

GIS开发入门,TopoJSON格式是什么?TopoJSON格式与GeoJSON格式有什么不同?

TopoJSON介绍 TopoJSON是一种几何拓扑结构的地理数据格式,它使用拓扑结构来表示地理对象,可以更有效地压缩和转移数据,从而加快数据加载速度。 TopoJSON格式构成 TopoJSON文件由三部分组成,transform、objects和arcs组成。transform描述了变换参数; objects描述地理实体…

mongodb分组查询

通过userId分组&#xff0c;得到结果字段为&#xff1a;_id和count db.my_solitaire.aggregate([{$group: {_id: "$userId", count: {$sum: 1}}}])通过userId分组得到分组字段和其他想要的字段&#xff0c;得到_id&#xff0c;userName&#xff0c;count userName 为…

【广州华锐互动】智能楼宇3D数字化展示,实现对建筑物的实时监控和管理

随着科技的不断发展&#xff0c;人们对于生活品质的要求也在不断提高。在这个信息爆炸的时代&#xff0c;如何将复杂的数据以直观、生动的方式呈现给用户&#xff0c;已经成为了一个重要的课题。智能楼宇3D数字化展示作为一种新型的建筑科技&#xff0c;正逐渐成为行业的新宠&a…

Spring笔记(三)(Spring整合web环境)

01、Spring整合web环境 1.1 Javaweb三大组件及环境特点 在Java语言范畴内&#xff0c;web层框架都是基于Javaweb基础组件完成的&#xff0c;所以有必要复习一下Javaweb组件的特点 组件作用特点Servlet服务端小程序&#xff0c;负责接收客户端请求并作出响应的单例对象&#…