Python之Django框架

news2024/12/22 20:04:43

目录

一、Web应用

1、什么是Web应用程序

2、什么是Web框架

​二、手写Web框架

三、Python主流的web框架

四、Django框架版本及下载

五、注意事项

六、基本使用

1、验证是否下载成功

2、常用操作命令

(1)创建django项目

(2)启动django项目

(3)创建应用

七、主要文件介绍


Django框架是一款专门用来开发web应用的框架

一、Web应用

1、什么是Web应用程序

Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。

应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。

案例:淘宝网、京东网、博客园等都是基于web应用的程序。

Web应用程序的优点

  1. 你所需要的只是一个适用的浏览器;
  2. 节省硬盘空间;
  3. 它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
  4. 通过跨平台使用的。(例如Windows,Mac,Linux等等)

Web应用程序的缺点

  • 严重依赖服务端的正常运行,服务端一旦出问题,客户端立马受到影响

2、什么是Web框架

别人写好的框架(就是一堆目录和文件),我们只需要在固定的位置写代码即可

  • web框架本质上可以看成是一个功能强大的socket服务端,用户的浏览器可以看成是拥有可视化界面的socket客户端。
    • 两者通过网络请求实现数据交互,学者们也可以从架构层面上先简单的将Web框架看做是对前端、数据库的全方位整合。

 二、手写Web框架

import socket

# 默认使用的是基于TCP协议的、可以更换成UDP协议的,需要修改对应的参数即可
server = socket.socket()

server.bind(('127.0.0.1', 8000))

# 监听客户端
server.listen(3)

while True:
    # 等待客户端来链接
    sock, addr = server.accept()
    # 接收客户端的消息
    data = sock.recv(1024)  # 接收过来的是字节类型的 b
    print(data.decode('utf-8'))
    str_data = data.decode('utf-8')
    lst_data = str_data.split(' ')
    print(lst_data)
    current_path = lst_data[1]  # /index  /home
    # 给客户端返回消息
    sock.send(b'HTTP/1.1 200 OK \r\n\r\n')  
    # TCP的流水协议,短时间内可以一次性接收多个发送的数据

    if current_path == '/index':
        sock.send(b'index')
    elif current_path == '/home':
        sock.send(b'home')
    else:
        sock.send(b'404 error')




    sock.close()

问题来了,如何做到在网址栏中输入什么后缀就返回什么后缀?

解决的思路:

  1. 服务端要知道你网址栏里输入的是什么后缀
  2. 服务端做判断,然后做对应的返回

服务端如何知道客户端输的的是什么后缀

当前的服务端存在的问题?

  1. socket部分需要我们自己每次都要写
  2. 我们需要自己每次处理HTTP格式的数据,自己转码、自己切分、自己取值等
  3. 没有解决高并发问题

怎么样优化以上存在的问题呢?

  • wsgiref模块的使用

wsgiref模块的使用

wsgiref服务器---------->uwsgi服务器(uwsgi)-------->Nginx服务器+uwsgi服务器

wsgiref模块是一个内置的模块,直接可以拿来使用,无需安装。它帮助我们封装了socket部分,

另外,它也解决了部分的高并发问题,但是,它能够解决的并发量并不高;他们也会帮我们

HTTP格式的数据做封装处理,也就是说不需要我们再自己处理。

views.py  ----》主要用来写业务逻辑的,它也称为是视图文件
urls.py     ----》主要用来写后缀和视图函数的对应关系,它也称为是路由文件
template  ----》存储项目中用到的模板文件,html文件,模板文本,提供了一些模板语法

每一个框架都应用有一个入口文件,Django也不例外

三、Python主流的web框架

【1】django

  • 大而全
    • 自带的功能非常的多
    • 但是有时候会略显笨重
  • 类似于'航空母舰'

【2】flask

  • 小而精
    • 自带的功能非常的少
    • 但是第三方模块非常的多
  • 类似于'游骑兵'
  • flask的第三方模块加到一起甚至比django还多
    • 并且也越来越像django
  • flask由于过多的依赖于第三方模块
    • 有时候也会受制于第三方模块

【3】tornado

  • 异步非阻塞框架
    • 速度极快
    • 甚至可以用于充当游戏服务器

【4】其他

  • 还有一些占比较小 但是也很厉害的框架
    • fastapi、sanic......

框架的核心逻辑几乎是一致的 我们在学习的时候只需要先学会一种之后就可以触类旁通

四、Django框架版本及下载

  • django1.x
    • 以前的老项目在使用,它跟2.x的版本区别不是特别大
  • django2.x
    • 主流的项目使用的都是2.x的版本,有一点区别的跟1.x
  • django3.x
    • 新版本了,现在有不少的项目确实在选择3.x的版本

学习基于django1.X版本即可原因:

  • 老项目中使用频率最高、最广泛的版本!!!  
  • 与2.X功能几乎一致
  • 与3.X最主要的区别在于新增了一个异步的功能

django的版本要和你的Python的版本要匹配,如django3用个2.7版本,不行

django2----->python3.6及以上
django1----->python3.6及以上

框架下载

pip3 install django==1.11.11

五、注意事项

  1. 项目名称必须是英文,不能是中文
  2. 一个pycharm窗口只打开一个django项目

六、基本使用

1、验证是否下载成功

  • cmd窗口直接输入
django-admin
  • 有一长串结果展示表明成功(需提前配置解释器环境变量)

2、常用操作命令

(1)创建django项目

先切换路径到你想存储的位置

命令行创建:
        django-admin startproject 项目名称
        django-admin startproject myfirst

pycharm创建项目
        File
            New project
                django
                    ... 

 (2)启动django项目

先把路径切到跟manage.py同级目录下面

命令行启动
        python3 manage.py runserver
        python3 manage.py runserver 8001

Next, start your first app by running python manage.py startapp [app_label].

(3)创建应用

python3 manage.py startapp 应用名(app01)

创建完应用之后,还要做一件非常重要的事情,就是注册应用,如果没有注册,创建出来也没用 

应用名要做到见名知意,符合变量的命名规则即可 

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

应用的概念:

  • django框架相当于是一所大学,应用相当于是大学里面的各个学院,一个Django框架至少要有一个应用
    • 大学相当于是个空壳子
      • 负责提供环境
    • 学院才是一个个真正具备特定功能的集合
  • eg:
  • 使用django写一个淘宝,淘宝里面有很多功能模块
  • 我们应该先创建一个空的django项目然后根据功能的不同创建不同的应用
  • django项目
    • 应用名01(user)    用户相关业务
    • 应用名02(order)     订单相关业务
    • 应用名03(goods)    产品相关业务
    • 应用名04(backend)      后台相关业务

七、主要文件介绍

  • mysecond            项目名称
    • app01            应用名称
    • migrations     它是迁移数据的记录
    • __init__.py
    • admin.py       django自带的后台管理系统
    • apps.py         暂且忽略,写一些注册的东西
    • models.py     模型层,跟数据库打交道的,以后创建表就在这里写
    • tests.py         测试脚本
    • views.py        视图文件,主要用来写核心的业务逻辑的
  • mysecond
    • __init__.py
    • settings.py      Django的全局配置文件
    • urls.py            路由文件,写地址的后缀和视图函数的对应关系
    • wsgi.py           wsgiref服务器
    • templates       存储HTML文件的
    • db.sqlite3        Django自带的小型数据库
    • manage.py     Django的启动文件,入口文件

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

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

相关文章

腾讯云3年云服务器价格及购买教程

腾讯云作为国内领先的云计算服务提供商,提供了多种优惠的云服务器套餐,以满足不同用户的需求,本文将详细介绍腾讯云3年云服务器价格及购买教程,新老用户均可购买! 1、活动页面:传送门>>> 2、进入…

CentOS7 安装Jenkins 2.414.3 详细教程

目录 1、前提条件硬件软件-java11安装 2、安装jenkins3、启动jenkins配置用户和用户组配置JAVA_HOME 4、配置Jenkins一直处于启动状态5、测试Jenkins是否可以访问以及配置6、访问Jenkins系统 1、前提条件 硬件 内存 4G ; 硬盘 20G 软件-java11安装 上传文件jdk-11.0.21_lin…

phono3py快速安装教程

phono3py是类似于Phonopy的另一款基于第一性原理计算获得材料声学性质并可后处理的功能强大的软件,在以往推送内容中也有介绍基于phono3py 计算晶格热导率VASPphono3py:快速计算晶格热导率 和声子寿命理论到实践:VASPPhono3py计算Phonon Lifetime 以及…

在Gradio实现分栏、分页的效果(二)

继续【Gradio的重要函数以及一些代码示例学习(一)】 1 fastapigradio的联合使用:mount_gradio_app 1.1 mount_gradio_app一个页面两个模块 分页的效果实现,主要依靠mount_gradio_app,启发于:Support mult…

edge浏览器无法进入中国知网,但可以进入其他网站需要怎么解决

最近使用edge浏览器进入中国知网,加载了很长时间都打不开,好不容易打开了,结果出现:“嗯...无法访问此页面”。即使无法进入知网,但可以进入哔哩哔哩或其他网站,甚是苦恼,下面是一个方法&#x…

谷歌护眼插件Dark Reader下载安装使用

网盘下载地址 链接:https://pan.baidu.com/s/1S086F-9aogPT1NJ2NoUqdw 提取码:ii29使用 前提:只对于谷歌用户: 1、下载后解压获得:Dark Reader v4.9.65.0.crx 2、然后把后缀改成.zip 3、再次解压出文件 4、然后把里…

在Spring Boot中使用MyBatis访问数据库

MyBatis,这个对各位使用Java开发的开发者来说还是蛮重要的,我相信诸位在企业开发项目的时候,大多数采用的是Mybatis。使用MyBatis帮助我们解决各种问题,实际上这篇文章,基本上默认为可以跳过的一篇,但是为了…

修改Launcher3 图标为圆角

packages\apps\Launcher3\res\xml\folder_shapes.xml packages\apps\Launcher3\src\com\android\launcher3\graphics\IconShape.java 上述文件的解析在 IconShape中 private static List<IconShape> getAllShapes(Context context) {ArrayList<IconShape> resul…

13.求面积[有问题]

#include<stdio.h> #include<math.h> #include<bits/stdc.h> using namespace std;void fun(double a,b,c) {double p,c;p (abc)/2;c sqrt(p*(p-a)*(p-b)*(p-c));printf("面积是&#xff1a;%lf",c); }int main(){double a,b,c;scanf("%lf,%…

OOM排查

OOM排查 一&#xff0c;原因 1.一次性申请对象太多&#xff0c;创建了大量对象&#xff0c;尤其从表中读取了大量数据&#xff0c;循环中大量创建对象&#xff0c;放入list中。方案&#xff1a;限量 2.内存资源耗尽为释放&#xff0c;如connction&#xff0c;线程。方案&#…

margin-bottom、margin-top设置不起效

问题&#xff1a; 如下&#xff0c;在uniapp项目中使用了tag标签&#xff0c;设置margin时&#xff0c;只有margin-left、margin-right生效&#xff0c;margin-bottom、margin-top设置不起效。f12直接在元素中修改也无效。 原因&#xff1a; uni-ui中的tag标签是行内元素&…

个人所得税思维导图参考 —— 筑梦之路

最近个人所得税优惠政策又有新变化&#xff1a; 1. 自2023年1月1日至2027年12月31日&#xff0c;对个体户年应纳税所得额不超过200万元的部分&#xff08;旧&#xff1a;不超过100万元的部分&#xff09;&#xff0c;减半征收个人所得税&#xff1b; 2. 适用个人所得税优惠政策…

自动化测试(Java+eclipse)教程

webdriver环境配置 1.下载chromedriver到本地&#xff08;一定要选择和自己浏览器相对应的版本chromedriver下载地址&#xff09; 2.加入到环境变量path中 webdriver工作原理 创建web自动化测试脚本 1.Maven项目创建 File->New->project->(搜索maven)选择maven pr…

Leetcode-面试题 02.02 返回倒数第 k 个节点

快慢指针&#xff1a;让快指针先移动n个节点&#xff0c;之后快慢指针一起依次向后移动一个结点&#xff0c;等到快指针移动到链表尾时&#xff0c;慢指针则移动到倒数第n个结点位置。 /*** Definition for singly-linked list.* public class ListNode {* int val;* …

【Linux】初识进程地址空间

❤️前言 大家好&#xff01;这里是好久没有营业的大懒虫lion&#xff0c;今天要和大家聊的内容是我最近新学习的关于进程地址空间的相关知识。 正文 当我们使用C/C语言进行内存管理时&#xff0c;经常会接触到这样的一张图片&#xff1a; 它常常被我们称作程序地址空间&#…

代码都成屎山了,还在用if-else?不如试试我的这套工厂模式+Map+自定义注解+枚举

前言 看到同事的代码&#xff0c;想到多年以前自己刚开始工作的时候写的代码&#xff0c;即使有再多的需求&#xff0c;再多的业务逻辑&#xff0c;都是满屏的if-else解决的&#xff0c;全然忘记什么叫做“面向对象编程”&#xff0c;但是写的多了都忘记了哪里是头&#xff0c;…

OAuth 2.0实现统一认证

OAuth 2.0协议概念&#xff1a; OAuth 是 Open Authorization 的简写。OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的帐号信息&#xff08;如用户名与密码&#xff09;&#xff0c;即第…

MIPI/DSI转eDP新选择CS5523芯片替代LT8911EXB,IT6151

ASL&#xff08;集睿致远&#xff09; CS5523 是一颗 MIPI DSI 输入&#xff0c;DP/eDP 输出转换芯片。MIPI 输入 4 lanes, 每 lane 最大支持 1.5Gbps&#xff0c; DP/eDP 输出最多支持 4 lanes, 每条 lane 最大支持 2.7Gbps。 芯片内部有一个 MCU &#xff0c;自带 flash。 …

计算机网络期末复习-Part2

1、网络应用程序体系结构 &#xff08;1&#xff09;客户端/服务器&#xff08;C/S&#xff09;体系结构&#xff1a; 客户端/服务器&#xff08;C/S&#xff09;应用程序&#xff1a; Web浏览器与Web服务器&#xff1a;当您使用Web浏览器&#xff08;客户端&#xff09;访问…

Vue3 学习笔记

vue3 官网&#xff1a;简介 | Vue.js (vuejs.org) 1. 环境搭建与启动 npm create vuelatest 这一指令将会安装并执行 create-vue&#xff0c;它是 Vue 官方的项目脚手架工具 之后&#xff0c;你将会看到一些诸如 TypeScript 和测试支持之类的可选功能提示&#xff1a; ✔ …