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

相关文章

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思