Django入门笔记(一):框架结构及原理解析

2023-10-24 04:50

本文主要是介绍Django入门笔记(一):框架结构及原理解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      • 1、下载安装
      • 2、创建django框架
      • 3、运行django
      • 4、创建app
      • 常用django命令

1、下载安装

Django框架是使用python语言开发的,因此可以直接使用pip进行安装:

pip install django

可以指定安装版本

我使用的python 3.8 选择的django 3.1.7(推荐最新安装django3.2版本,可长久支持)

安装后验证成功:

python -m django --version

在这里插入图片描述

2、创建django框架

创建项目:

django-admin startproject 项目名

项目名自己命名,注意避开常用关键字

age:

django-admin startproject oneMyweb

创建好后自动生成框架文件:
在这里插入图片描述

自动生成的文件如上图所示

根目录下的文件manage.py是用于项目管理的,通过此文件来执行管理操作,因此最里面的自动生成的文件不能随意更改名称,因为manage会调用它们。

setting.py文件是django项目的配置文件,包含了很多配置项,内饰与scrapy框架中的setting

urls.py文件是django框架得到前端http请求后,执行对应的函数对应关系。

wsgi.py文件:

首先要明白:wsgi – 是pyhton组织制定的web服务网关接口规范,简称wsgi 遵循wsgi规范的 web后端系统, 我们可以理解为 由两个部分组成

wsgi web serverwsgi web application

它们通常是运行在一个python进程中的两个模块,或者说两个子系统。

wsgi web server 接受到前端的http请求后,会调用 wsgi web application 的接口(
比如函数或者类方法)方法,由wsgi web application 具体处理该请求。然后再把处理结果返回给 wsgi web
server, wsgi web server再返回给前端。

如图所示在这里插入图片描述

这两个子系统有各自负责的重点。

wsgi web server 负责 提供高效的http请求处理环境,可以使用多线程、多进程或者协程的机制。

http 请求发送到 wsgi web serverwsgi web server 分配 线程或者进程或者 轻量级线程(协程),然后在
这些 线程、进程、或者协程里面,去调用执行 wsgi web application 的入口代码。

wsgi web application 被调用后,负责 处理 业务逻辑。 业务逻辑的处理可能非常复杂, wsgi web
application 需要精心的设计来正确处理。

django是 wsgi web application 的框架,它只有一个简单的单线程 wsgi web server。 供调试时使用。

产品正式上线运行的时候,通常我们需要高效的 wsgi web server 产品,比如
gunicorn,uwsgi,cherrypy等,结合Django ,组成一个高效的 后端服务。

所以这个 wsgi.py 就是 提供给wsgi web server调用 的接口文件,里面的变量application对应对象实现了wsgi入口,供wsgi web server调用 。

django2.x版本里只有一个wsgi.py文件,而django3.x版本中添加了一个asgi.py文件。

这里的asgi.py文件是wsgi.py的扩展:

WSGI是基于HTTP协议模式的,不支持WebSocket,而ASGI的诞生则是为了解决Python常用的WSGI不支持当前Web开发中的一些新的协议标准。同时,ASGI对于WSGI原有的模式的支持和WebSocket的扩展,即ASGI是WSGI的扩展。

3、运行django

首先进入项目根目录,或则是pycharm的终端
输入如下命令:

python manage.py runserver
打开浏览器 输入运行后给予的本机ip,看到如下图片,即取得成功。。。
在这里插入图片描述

4、创建app

app是指python的一个应用包、实现各种功能

python manage.py startapp 包名

常用django命令

>django-admin.py helpType 'django-admin.py help <subcommAvailable subcommands:[django]check         检查Django项目的完整性compilemessages  编辑语言文件createcachetable  dbshell       进入Django dbshelldiffsettings  查看你的配置和Django的默认配置有和不同dumpdata      导出数据flush         清空数据库inspectdbloaddata       导入数据makemessages   创建语言文件makemigrations 生成数据库同步脚本migrate        同步数据库runserver      运行开发服务器sendtestemailshell          进入django shellshowmigrations  查看生成数据库的同步脚本sqlflush       查看生成清空数据库的脚本sqlmigrate     查看数据库同步的sql语句sqlsequenceresetsquashmigrationsstartapp       创建一个appstartproject    创建一个项目testtestserver

这篇关于Django入门笔记(一):框架结构及原理解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/272815

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联