Django框架环境的搭建(图文详解)
目录
day01 Web框架和Django基础
1.web框架底层
1.1 网络通信编辑
1.2 常见软件架构
1.3 手撸web框架
2.web框架
2.1 wsgiref
2.2 werkzeug
2.3 各框架的区别
3.快速上手django框架
3.1 安装
3.2 命令行
3.3 Pycharm
4.虚拟环境
4.1 创建虚拟环境 - 命令行
4.2 Pycharm
4.2.1 项目+虚拟环境
4.2.2 django+虚拟环境【最新】
4.2.3 django+虚拟环境【指定版本】
小结
5.关于创建app
6.关于纯净版
总结
day01 Web框架和Django基础
今日概要:
-
网络底层引入,到底什么是web框架?
-
常见web框架对比
-
django快速上手(创建网站)
-
常见操作:虚拟环境、django项目、多app应用、纯净版
-
逐点剖析:路由、视图、模板、静态文件、ORM
1.web框架底层
1.1 网络通信
注意:局域网。

个人一般写程序,想要让别人访问:阿里云、腾讯云。
-
去云平台租服务器(含公网IP)
-
程序放在云服务器

让网络中可以互相通信的双发收发数据。
-
我的电脑【服务端】
import socket # 1.监听本机的IP和端口 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(('192.168.10.3', 8001)) # 我自己的电脑IP,端口8001 # 2.让多少人等待 sock.listen(5) while True:# 3.等待连接请求的申请,有人来连接(阻塞)conn, addr = sock.accept() # 4.连接成功后立即发送conn.sendall("欢迎使用xx系统".encode("utf-8")) # 5.断开连接conn.close() # 6.停止服务端程序 sock.close() -
女朋友的电脑(同一个局域网)【客户端】
import socket # 1. 向指定IP发送连接请求 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(('192.168.10.3', 8001)) # 2. 接收你发的消息 message = client.recv(1024) print(message.decode("utf-8")) # 3.断开连接 client.close() -
姓王的好兄弟【客户端】
import socket # 1. 向指定IP发送连接请求 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(('192.168.10.3', 8001)) # 2. 接收你发的消息 message = client.recv(1024) print(message.decode("utf-8")) # 3.断开连接 client.close()我们自己写时,通过socket模块可以实现网络上的两端进行通信。
1.2 常见软件架构
-
bs架构
浏览器:充当客户端 服务器:网站
-
cs架构,开发应用程序,例如:QQ、Pycharm、网易云音乐(安装在电脑上的软件)
客户端:安装在电脑上的软件。 网易云音乐 服务端:网易服务器
对于程序原来说:
-
网站,只需要写服务端程序。
基于django开发的本质就是网站(web应用) 电脑上浏览器本质上是socket实现网络通信。
-
软件,客户端 + 服务端。
1.3 手撸web框架
快速自己写以为网站(不能用django、flask等)。
import socket
# 1.监听本机的IP和端口
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('192.168.0.6', 9000)) # 我自己的电脑IP,端口8001
# 2.让多少人等待
sock.listen(5)
while True:# 3.等待连接请求的申请,有人来连接(阻塞) -> 登录浏览器来连接我conn, addr = sock.accept()
# 4.收到浏览器发送的消息buf = conn.recv(2048)print(buf)
# 5.给浏览器返回数据conn.send(b"HTTP/1.1 200 OK\r\n\r\n")conn.send(b"Hello, World")
# 6.断开连接conn.close()
# 6.停止服务端程序
sock.close()
再引出一个知识点,浏览器再与服务端的网站进行通信时,多了几个规则。
-
服务端:网站
-
客户端:浏览器
-
创建连接
-
发送数据,固定格式
# 请求头首行 GET /xxx/xxx/?name=xxx&age=111 HTTP/1.1\r\n # 请求头 Host: 192.168.0.6:9000\r\n Connection: keep-alive\r\n Upgrade-Insecure-Requests: 1\r\n User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36\r\n Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\n Accept-Encoding: gzip, deflate\r\n Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7\r\n\r\n'# 请求头首行 POST /xxx/xxx/ HTTP/1.1\r\n # 请求头 Host: 192.168.0.6:9000\r\n Connection: keep-alive\r\n Upgrade-Insecure-Requests: 1\r\n User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36\r\n Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\n Accept-Encoding: gzip, deflate\r\n Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7\r\n\r\n # 请求体 username=wupeiqi&password=123浏览器本质上发送请求时,包含请求头和请求体。 - GET请求- 只有请求头 + 没有请求体- 请求头之间用 \r\n- 请求头和请求体之间用 \r\n\r\n- POST请求- 只有请求头 + 有请求体- 请求头之间用 \r\n- 请求头和请求体之间用 \r\n\r\n -
一次请求和一次响应后,断开连接。
-
告诉你两个关键点:
-
http协议?
http协议特点:无状态的短连接。 http的应用:浏览器向服务端发送请求,就是按照http协议来的。- 请求头+请求体 ;请求头和请求体之间用 \r\n\r\n ;请求头之间用 \r\n- 一次请求和一次响应后,断开连接。 -> 短连接。 ->无状态如何体现?- 后期记住 请求头+cookie
-
GET请求和POST到底有什么区别?
最直观的区别就是:请求体的位置区别
2.web框架
常见的web框架:django、flask、tornado、sanic、fastapi..

web应用程序:
-
用户网络通信的socket
-
web框架
-
业务开发
以django为例:
-
wsgiref模块、uwsgi、daphne -> 本质上都是socket实现。
-
原来实现了框架
以flask为例:
-
werkzurg、uwsgi、...
-
flask框架
以tornado为例:
-
tornado、werkzurg、uwsgi、...
-
框架
2.1 wsgiref
from wsgiref.simple_server import make_server
def run_server(environ, start_response):start_response('200 OK', [('Content-Type', 'text/html')])return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]
if __name__ == '__main__':httpd = make_server('127.0.0.1', 8000, run_server)httpd.serve_forever()
2.2 werkzeug
pip install werkzeug
from werkzeug.wrappers import Response
def application(environ, start_response):response = Response('Hello World!', mimetype='text/plain')return response(environ, start_response)
if __name__ == '__main__':from werkzeug.serving import run_simple
run_simple('localhost', 4000, application)

2.3 各框架的区别
django、flask、tornado、sanic、fastapi..
-
内部集成功能的多少
-
django,内部提供了很多组件。 【相对大】
-
flask、tornado、sanic、fastapi... 本身自己功能很少+第三方组件。【相对小】
-
-
同步框架 vs 异步非阻塞
-
异步非阻塞:tornado、sanic、fastapi、django
-
同步:django、flask、bottle、webpy..
1.django、flask 2.tornado,异步非阻塞,特别NB。- 同步:常见应用。- 异步:IO应用 + conroutine装饰器 + redis/MySQL/... 3.sanic,路飞小猿圈平台 4.fastapi- 参考flask- py最新注解- restfulAPI- 异步目前不看好:- 增加编程的难度,功能&效率- 项目中不会有那么IO操作 ---> 100功能/2-IO ---> celery
-
感受不深刻,只是听我讲完了,鬼吹这么NB东西到底是怎么实现的?
-
socket & 多线程 & 多进程
-
IO多路复用
-
顿悟
https://www.cnblogs.com/wupeiqi/p/6536518.html


3.快速上手django框架
3.1 安装
pip install django==3.2
C:\Python39- python.exe- Scripts- pip.exe- django-admin.exe- Lib- re.py- random.py- site-pakages- django==3.2...
3.2 命令行
-
创建项目
cd 指定目录 django-admin startproject 项目名
mysite ├── manage.py [项目的管理工具] └── mysite├── __init__.py├── settings.py 【配置文件,只有一部分。程序启动时,先读取django内部配置,再读settings.py】├── urls.py 【主路由,在里面编写 /xxx/xxx/xxx ---> index 】├── asgi.py 【异步】└── wsgi.py 【同步,主】
-
编写代码 urls.py
from django.contrib import admin from django.urls import path from django.shortcuts import HttpResponse def info(request):print("请求来执行了")return HttpResponse("xxxx") def xxxx(request):print("请求来执行了")return HttpResponse("。。。。。。") urlpatterns = [# path('admin/', admin.site.urls),path('api/index/', info),path('api/show/', xxxx), ] -
运行
cd 项目 python3.9 manage.py runserver python3.9 manage.py runserver 127.0.0.1:8000 python3.9 manage.py runserver 127.0.0.1:9000
-
app概念
cd 项目 python manage.py startapp 名字
mysite ├── manage.py [项目的管理工具] ├── web├── __init__.py├── views.py [视图函数]├── models.py [ORM,基于models可以对数据库进行简便的操作]... └── mysite├── __init__.py├── settings.py 【配置文件,只有一部分。程序启动时,先读取django内部配置,再读settings.py】├── urls.py 【主路由,在里面编写 /xxx/xxx/xxx ---> index 】├── asgi.py 【异步】└── wsgi.py 【同步,主】
mysite ├── manage.py ├── mysite │ ├── __init__.py │ ├── asgi.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── web├── __init__.py├── admin.py├── apps.py├── migrations│ └── __init__.py├── models.py├── tests.py└── views.py
3.3 Pycharm

django-admin startproject 项目名称 cd 项目目录 python manage.py startapp python manage.py runserver
4.虚拟环境
注意:以后再创建项目时,不要一直用系统解释器,为每个项目:虚拟环境 + 项目文件。
4.1 创建虚拟环境 - 命令行
-
venv,Python官方用于创建虚拟环境的工具。
cd xxx/xxx/crm python3.9 -m venv ddd python3.7 -m venv xxxx python3.7 -m venv /xxx/xxx/xxx/xx/ppp
-
virtualenv 【推荐】
pip install virtualenv
cd /xxx/xx/ virtualenv ddd --python=python3.9
virtualenv /xxx/xx/ddd --python=python3.7
操作:
-
在
F:\envs\创建虚拟环境。cd F:\envs virtualenv crm --python=python3.9

-
激活虚拟环境
-
win
cd F:\envs\crm\Scripts activate
-
mac
source /虚拟环境目录/bin/activate
-
-
安装包
pip install 包名
-
创建django项目
D:\project\crmcd D:\project django-admin startproject crm
D:\project\crm ├── manage.py [项目的管理工具] └── crm├── __init__.py├── settings.py 【配置文件,只有一部分。程序启动时,先读取django内部配置,再读settings.py】├── urls.py 【主路由,在里面编写 /xxx/xxx/xxx ---> index 】├── asgi.py 【异步】└── wsgi.py 【同步,主】
python manage.py startapp xxxx python manage.py runserver
-
退出虚拟环境
deactivate

4.2 Pycharm
4.2.1 项目+虚拟环境


你需要做的:
-
创建项目+虚拟环境
-
code.py,写代码运行
-
在虚拟环境中安装 requests
pip install requests
4.2.2 django+虚拟环境【最新】
pip install django

注意:创建django最新版可以。
4.2.3 django+虚拟环境【指定版本】

pip install django==3.2



小结
-
快速使用django + 目录结构(系统解释器)
-
虚拟环境
-
命令行
virtualenv 环境名 --python=python3.9
环境目录/Scripts/activate
pip install django pip install requests ...
创建django项目
django-admin ... ...
-
pycharm项目+虚拟环境
-
-
python+django+3.2版本
-
先创建纯净的项目 + 虚拟环境(代码+环境放在,.venv)
D:\code\crm- .venv
-
再次虚拟环境中创建django
pip install django==3.2
-
创建项目
cd 项目根目录 django-admin startproject crm .
D:\code\crm- .venv- manage.py- crm.....
-
命令行
python manage.py startapp app01 python manage.py startapp app02python manage.py runserver
-
为了更方便运行,pycharm配置。
-
5.关于创建app
-
项目只需要一个app,目录机构的建议。

-
项目只需要一个app,目录结构的建议。
day002.venvday002......manage.pyappswebbackendapi

6.关于纯净版

总结
知道如何基于pycharm+虚拟环境+业务场景 -> 创建django项目。
问题:给别人的代码+requirements.txt
相关文章:
Django框架环境的搭建(图文详解)
目录 day01 Web框架和Django基础 1.web框架底层 1.1 网络通信编辑 1.2 常见软件架构 1.3 手撸web框架 2.web框架 2.1 wsgiref 2.2 werkzeug 2.3 各框架的区别 3.快速上手django框架 3.1 安装 3.2 命令行 3.3 Pycharm 4.虚拟环境 4.1 创建虚拟环境 - 命令行 4…...
Java接口自动化测试系列[V1.0.0][概述]
基础知识 在TCP/IP中,HTTP属于传输层协议,该协议采用的是Request-Response的模式,且该协议是无状态的,也就是后续如果要用到前面的信息必须重新请求重新获取;HTTP通过SSL/TSL加密成为HTTPS,与HTTP相比HTTP…...
indexedDB存储
使用 setDBData({ id: name, value: 张三, expire: new Date().getTime() 10000 }, info, infoDB) console.log(getDBData(name, info, infoDB)); 添加或更新数据 async function setDBData(data,storeName "storeName",dbName "dbName",version ) {c…...
双向绑定与单向数据流之争,Solid会取代React吗
现在有一种观点声音逐渐大了起来,认为市面上出现了许多比 React 性能更好的框架,是不是意味着,React 将要被淘汰了? 谈谈我的看法,来做一个深入一点的分析 先说结论:Solid.js 要取代 React 很难 1 双向…...
Java --- JVM之垃圾回收相关知识概念
目录 一、System.gc() 二、内存溢出与内存泄漏 2.1、内存溢出 2.2、内存泄漏 三、Stop the world 四、垃圾回收的并行与并发 4.1、并发 4.2、并行 4.3、并行 vs 并发 4.4、垃圾回收的并发与并行 五、安全点与安全区域 5.1、安全点 5.2、安全区域 六、引用 6.1…...
单节点服务架构
单节点的服务架构: LNMP l:lilnux系统 n:nginx静态页面,转发动态请求 m:mysql数据库,后端服务器,保存用户和密码信息,以及论坛的信息 p:PHP,处理动态请求,动态请求转发数据库,然…...
Ubuntu Server download
前言 Ubuntu——公共云、数据中心和边缘上最受欢迎的 Linux 发行版。自成立以来,Ubuntu 一直在获得市场份额,截至今天已接近 50%。 Ubuntu Server download VersionUbuntu Server 其它主机型号版本Ubuntu AMD历史版下载百度云Ubuntu Server all Ubuntu…...
React 自定义hook 之 防抖和节流
一、简介 防抖和节流主要用于控制事件触发频率,提高页面性能和用户体验。 防抖: 当事件被触发后,在一定时间内有新的对应事件,则会取消老的事件执行。 节流: 当事件触发后,在一定时间内会忽略新的事件执行。 二、技术实现 1、us…...
CVE-2022-21661
简介 CVE-2022-21661是一个与WordPress相关的漏洞,涉及到SQL注入问题。该漏洞主要源于WordPress的WQ_Tax_Query类中的clean_query函数,可能允许攻击者通过控制传递给该函数的数据来控制生成的SQL查询,从而执行任意的SQL代码。 当WordPress的…...
【Python】tensorboard实时查看模型训练过程的方法示例
本文对tensorboard实时查看模型训练过程的方法进行实例详解,以帮助大家理解和使用。 步骤1:查看训练过程保存的文件中是否有这个文件,红框内的。 步骤2:如果有,则打开终端,激活安装过tensorboard的环境。…...
Golang基础-面向对象篇
文章目录 struct结构体类的表示与封装类的继承多态的基本要素与实现interface空接口反射变量的内置pairreflect包解析Struct TagStruct Tag在json中的应用 struct结构体 在Go语言中,可以使用type 关键字来创建自定义类型,这对于提高代码的可读性和可维护…...
全国的科技创新情况数据分享,涵盖2020-2022年三年情况
随着国家对科技创新的重视和大力支持,全国的科技创新情况越来越受到关注。 我们根据中国城市统计年鉴的这方面指标,分析汇总得出全国科技创新情况数据,需要说明的是,由于统计年鉴指标调整,每一年的数据并非字段相同&a…...
visionOS空间计算实战开发教程Day 1:环境安装和编写第一个程序
安装 截至目前visionOS还未在Xcode稳定版中开放,所以需要下载Xcode Beta版。比如我们可以下载Xcode 15.1 beta 2,注意Xcode 15要求系统的版本是macOS Ventura 13.5或更新,也就是说2017年的MacBook Pro基本可以勉强一战,基…...
java常见数值类型取值范围/ int short long BigInteger取值范围
文章目录 一、各类型取值范围 一、各类型取值范围 以下整理java中常用的数值类型取值范围。 类型字节大小最小值最大值取值范围byte8bit-128127-128到127short16bit-2 15 ^{15} 152 15 ^{15} 15-1-32768-32767int32bit-2 31 ^{31} 312 31 ^{31} 31 -1-2,147,483,648 到 2,147…...
echarts产品日常奇怪需求
设置最小刻度导致好多小数,限制两位 yAxis 指定的y轴设置 axisLabel,可以格式化显示 文档地址:https://echarts.apache.org/zh/option.html#yAxis.axisLabel.formatter yAxis: [{type: value,name: 利率,position: right,alignTicks: true,mi…...
CSDN文章保存为MD文档(一)
免责声明 文章仅做经验分享用途,利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担!!! import os import re i…...
【tomcat】java.lang.Exception: Socket bind failed: [730048
项目中一些旧工程运行情况处理 问题 1、启动端口占用 2、打印编码乱码 ʮһ�� 13, 2023 9:33:26 ���� org.apache.coyote.AbstractProtocol init ����: Fa…...
什么是高防IP?有什么优势?怎么选择高防IP?
在当今的互联网环境中,分布式拒绝服务(DDoS)攻击已经成为一种常见的安全威胁。这种攻击通过向目标服务器发送大量的无效流量,使其无法处理正常的请求,从而达到迫使服务中断的目的。作为一个用户,你是否曾遇…...
不存在类型变量 A, T 的实例,使 Collector<T, A, List<T>> 符合 Supplier<R>
报错信息 原因: 不存在类型变量 A, T 的实例,使 Collector<T, A, List<\T>> 符合 Supplier<\R> 来源 测试Stream流的map方法,做算法习惯基本类型定义数组。 map方法:Stream API的一部分。允许以一种声明式的方式处理数据,…...
千兆光模块和万兆光模块的供应链管理
随着网络通信技术的不断发展,千兆光模块和万兆光模块已逐渐成为现代网络建设中不可缺少的组成部分。它们在云计算、数据中心、大规模机房以及企业内部网络等领域广泛应用,已经成为大家熟知的产品。 千兆光模块和万兆光模块的工作原理基本相同ÿ…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
