10.1、Django入门

news2024/11/25 18:37:00

文章目录

  • 预备知识
    • MVC模式和MTV模式
      • MVC模式
      • MTV 模式
  • Django框架
    • Django框架简介
    • Django框架的应用
      • 启动后台admin站点管理
        • 数据库迁移
        • 创建管理员用户
        • 管理界面本地化
      • 创建并使用一个应用bookapp


预备知识

HTTP协议就是客户端和 服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。
基于TCP/IP

  • HTTP是一个属于应用层的面向对象的协议
  • HTTP协议工作于客户端-服务端架构上。

基于请求-响应模式

– 浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

  • Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。
无状态协议:客户端的每次请求都是一个新的请求,不会记录之前的通信状态。

无状态解决办法:

  • 通过cookie,记录客户端之前的请求信息
  • 通过Session会话保存。

HTTP请求中常见的请求方式:
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。

  • HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
  • HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/4a93c139650b4ee599483ec70112b2e4.png

MVC模式和MTV模式

MVC模式

MVC 就是把Web应用分为模型(M),控制器( C )和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射( ORM ),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求。
在这里插入图片描述

MTV 模式

MTV模式本质上和 MVC 是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,在
Python的世界中,基本(除了Pylons)都使用了 MVC 的变种 MTV (Model Templates View 模型-模板-视图)。
Django 的MTV分别是值:
M 代表模型(Model): 负责业务对象和数据库的关系映射( ORM )。
T 代表模板 (Template):负责如何把页面展示给用户( html )。
V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。
除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template。

Django框架

Django框架简介

  • 什么是框架?
    软件框架就是为实现或完成某种软件开发时,提供了一些基础的软件产品,
    框架的功能类似于 基础设施 ,提供并实现最为基础的软件架构和体系
    通常情况下我们依据框架来实现更为复杂的业务程序开发
    框架就是程序的骨架

  • Python 中常见的框架有哪些?
    大包大揽 Django 被官方称之为完美主义者的Web框架。
    力求精简 web.py 和 Tornado
    新生代微框架 Flask 和 Bottle

Django 是一个高级的Python Web框架,它鼓励快速开发和清洁,务实的设计。Django 具有超强扩展性以及安全性(能帮助开发人员避开许多常见的安全错误)。

Django框架的应用

在pycharm中创建Django项目
在这里插入图片描述

目录说明:
manage.py :一个命令行工具,允许你用多种方式对 Django 项目进行交互
内层的目录:项目的真正的Python包
_ _ init _ _.py :一个空文件,它告诉Python这个目录应该被看做一个Python包
settings.py :项目的配置
urls.py :项目的URL声明,进行路由配置
wsgi.py :项目与 WSGI 兼容的Web服务器入口
asgi.py :客户端和服务端发生推送的网关接口

创建完项目,进入terminal,执行python manage.py runserver启动项目
在这里插入图片描述在这里插入图片描述

启动后台admin站点管理

Django框架能自动生成后台管理系统

站点分为“内容发布(后台管理)”和“公共访问(前台管理)”两部分
“内容发布”的部分负责添加、修改、删除内容,开发这些重复的功能是一件单调乏味、缺乏创造力
的工作。因此, Django 会根据定义的模型类完全自动地生成管理模块。
Django 框架中有一个非常强大的应用功能: 能自动管理界面。 常被Web平台管理者使用,去管理整个Web平台。

数据库迁移

默认数据是保存在sqlite(文件型数据库)中的。
在这里插入图片描述使用这些 Django 自带的应用程序,需要我们在数据库中创建一些数据表对应,然后才能使用它们。

在ptcharm 的 tools ---> run manage.py task 能打开manage的自动补齐功能

python manage.py makemigrations这个命令是记录对数据的更改,并生成一个迁移文件。但是这个命令并没有作用到数据库。
执行python manage.py migrate 命令时,这条命令的主要作用就是把这些改动作用到数据库,比如创建数据表,或者增加字段属性

在这里插入图片描述此时,双击db.sqlite3,进入数据库能查看到已经数据库中多了很多表。再次启动django项目。
在这里插入图片描述

创建管理员用户

浏览器输入http://127.0.0.1:8000/admin,显示管理员登录界面。但是此时还没有用户。需要先创建用户。
在这里插入图片描述

在terminal,使用命令python manage.py createsuperuser创建超级用户admin。使用admin登录,能看到管理用户和组的界面。

在这里插入图片描述

管理界面本地化

编辑 settings.py 文件,设置编码、时区

LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'

不用重新启动,直接刷新界面就能汉化的server服务
在这里插入图片描述

创建并使用一个应用bookapp

  • 创建第一个应用程序

Django 自带一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。
在一个项目中可以创建一到多个应用,每个应用进行一种业务处理。
执行创建应用的命令:
在这里插入图片描述应用的目录结构为:
在这里插入图片描述

  • 编写视图函数

视图:对用户的请求(request)进行业务逻辑操作,最终返回给用户一个响应(response)

打开文件 bookapp/views.py 并放入以下Python代码:

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def index(request):
    print('用户请求的路径为:',request.path)
    return HttpResponse('图书管理系统')
  • 编写路由规则

浏览器访问index/的时候,执行index视图函数

在这里插入图片描述浏览器输入index/路径,访问测试:

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

现在还有一个问题:当项目的子应用特别多的时候,如果将每个子应用的路由规则都写在项目的urls.py文件(主路由)中,那么该文件就会变得非常大且乱。
能不能将项目的子应用路由就写在子应用的目录下,然后在项目主路由里调用呢?

在项目主路由文件urls.py文件编写:

from django.contrib import admin
from django.urls import path, include

from bookapp.views import index

urlpatterns = [
    path('admin/', admin.site.urls),
    path('book/', include('bookapp.urls')) #当用户请求/book/时,访问bookapp/urls.py子路由文件
]

在子应用下创建子路由 bookapp/urls.py 文件,填写如下内容:

from django.urls import path
from bookapp import views

urlpatterns=[
    # name表示给index起的别名
    path(r'', views.index, name='index') #当访问路径book/的时候,执行views.index视图函数
]

bookapp/views.py 视图函数内容为:

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def index(request):
    print('用户请求的路径为:',request.path)
    return HttpResponse('图书管理系统')

重新启动项目,浏览器测试输入测试:【Django项目如果只是修改,那么不需要重新启动,如果创建了文件,需要重新启动才能生效
在这里插入图片描述
在这里插入图片描述

还可以在 bookapp/views.py 视图函数中增加一些HTML样式:

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def index(request):
    print('用户请求的路径为:',request.path)
    return HttpResponse('<h1 style="color:red">图书管理系统</h1>')

在这里插入图片描述

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

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

相关文章

教你搭建FTP文件共享服务器

一、什么是FTP FTP—文件传输协议&#xff08;File Transfer Protocol&#xff0c;FTP&#xff09;是用于在网络上进行文件传输的一套标准协议&#xff0c;它工作在 OSI 模型的第七层&#xff0c; TCP 模型的第四层&#xff0c; 即应用层&#xff0c; 客户在和服务器建立连接前…

BCN基团TAMRA-BCN-PEG4-endo,endo-BCN-PEG4

中文名&#xff1a;endo-BCN-四聚乙二醇-四甲基罗丹明 英文名&#xff1a;endo-BCN-PEG4-TAMRA&#xff0c;TAMRA-BCN-PEG4-endo CAS号&#xff1a;N/A 化学式&#xff1a;C46H56N4O10 分子量&#xff1a;824.97 产品描述&#xff1a; TAMRA-BCN-PEG4-endo包含 TARMA 染料和 …

分布式系统(数据复制与一致性)

文章目录ReplicationCAP ConjectureData-centric Consistency ModelsSequential ConsistencyCausal ConsistencyEntry ConsistencyEventual ConsistencyClient-centric Consistency ModelsMonotonic Read ConsistencyMonotonic Writes ConsistencyRead Your Writes Consistency…

Python学习基础笔记五十三——单继承

1、派生属性&#xff1a; 当然子类也可以添加自己的新的属性或者在这里重新定义这些属性&#xff08;不会影响到父类&#xff09;&#xff0c;需要注意的是&#xff0c;一旦重新定义了自己的属性且与父类重名&#xff0c;那么调用新增的属性&#xff0c;就以自己为准了。 例1…

在Windows中使用Nginx配置部署springboot+vue项目

Nginx 链接&#xff1a;https://pan.baidu.com/s/1c-9JJ3e63rNNeSRuEFh0Ow?pwdaamb 提取码&#xff1a;aamb 配置 解压后进入到 conf 目录下&#xff0c;修改 nginx.conf 文件&#xff0c;将下面的内容直接复制粘贴进去即可。 events {worker_connections 1024; ## Defa…

分享即时通讯音视频开发编码标准

即时通讯应用中的实时音视频技术&#xff0c;几乎是IM开发中的最后一道高墙。原因在于&#xff1a;实时音视频技术 音视频处理技术 网络传输技术 的横向技术应用集合体&#xff0c;而公共互联网不是为了实时通信设计的。 视频通讯过程是视频和音频的实时双向完整通讯过程。在…

java学习day62(乐友商城)商品规格设计与商品查询的页面实现

1.商品规格数据结构 乐优商城是一个全品类的电商网站&#xff0c;因此商品的种类繁多&#xff0c;每一件商品&#xff0c;其属性又有差别。为了更准确描述商品及细分差别&#xff0c;抽象出两个概念&#xff1a;SPU和SKU&#xff0c;了解一下&#xff1a; 1.1.SPU和SKU SPU&…

恒温恒湿实验室(房)建设、设计SICOLAB

通用实验室是指适用于多学科的以实验台规模进行经常性科学研究和实验工作的实验室&#xff0c;其夏季空气调节室内计算参数为温度 26&#xff5e;28℃&#xff0c;相对湿度小于 65%&#xff0c;在规范中没有对温湿度控制精度及洁净度做相关要求。专用实验室是指有特定环境要求&…

C++基础学习三

目录儿六、分支语句和逻辑操作符6.1 if语句6.1.1 if6.1.2 if-else6.1.3 if-else if-else6.2 逻辑表达式6.2.1 逻辑或||6.2.2 逻辑与&&6.2.3 逻辑非!6.2.4 逻辑操作符的其他表示方式6.3 字符函数库cctype6.4 三目/元操作符6.5 switch语句6.5.1 switch引入枚举常量6.6 br…

【OpenCall】ICASSP2023通用会议理解及生成挑战赛邀请函

ICASSP2023 通用会议理解及生成挑战赛(General Meeting Understanding and Generation Challenge,缩写为 MUG)是ICASSP2023 系列大挑战(SPGC)之一&#xff0c;由魔搭ModelScope社区、阿里巴巴达摩院语音实验室&语言技术实验室&#xff0c;阿里云天池联合浙江大学数字媒体计…

Linux基本搭建和操作

Linux基本搭建和操作1、创建三台虚拟机2、创建使用SSH远程连接3、实现IP地址与主机名的映射4、关闭和禁用防火墙5、创建目录结构6、压缩打包7、安装软件包安装jdk安装mysql8、创建脚本文件9、运行脚本文件10、免密登录配置11、远程拷贝文件1、创建三台虚拟机 序号虚拟机名称静…

高效技巧-打表法

打表法 打表是一种典型的用空间换时间的技巧 一般指将所有可能需要用到的结果事先计算出来&#xff0c;这样后面需要用到时就可以直接查表获得。 打表常见的用法有如下几种: ①在程序中一次性计算出所有需要用到的结果&#xff0c;之后的查询直接取这些结果这个是最常用到的…

开源之路——如何发布属于自己的npm包

开源之路——如何发布属于自己的npm包1、前言2、起步2.1、初始化项目2.2、安装webpack相关依赖2.3、添加入口文件和封装方法2.4、设置源2.5、添加用户2.6、发布3、使用1、前言 在进行开发的过程当中&#xff0c;难免会出现一些重复性的工作&#xff0c;例如说我们要对一个数组…

电脑如何格式化重装系统

​众所周知&#xff0c;默认情况下&#xff0c;计算机重新安装系统将设置格式化磁盘。如果您选择其他需要格式化的硬盘&#xff0c;您必须如何操作&#xff1f;一般来说&#xff0c;我们是pe手动格式磁盘可以避免立即格式化硬盘造成的一些问题。让我们谈谈如何格式化硬盘重做系…

【软件测试】测试的天花板?资深测试怎么一路爬的......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 测试职业的天花板是…

脑图谱的验证方法

方法 目的 与其他分割比较区域内的同质性 比较不同分割的平均区域内同质性 有约束的几何扰动比较 验证分割区域内部的功能同质性 留一交叉验证 验证相似矩阵的稳定性 剪影宽度silhouette width (SI) 计算簇内和簇外的功能信号相似性差异 骰子系数dice coefficient 衡…

G1D36-import-keras.save_model-code-沐沐的调参课

1、python导入函数 https://zhuanlan.zhihu.com/p/64893308 服了 https://blog.csdn.net/weixin_45195364/article/details/119857246?spm1001.2101.3001.6650.6&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-1198572…

OSCS开源安全周报第22期:NuGet 仓库中被发现 13.5 万个包含钓鱼地址的组件包

本周安全态势综述 OSCS 社区共收录安全漏洞15个&#xff0c;公开漏洞值得关注的是 Jenkins Google Login Plugin 存在开放重定向漏洞&#xff08;CVE-2022-46683&#xff09;&#xff0c;Netty <4.1.86.Final 存在拒绝服务漏洞&#xff08;CVE-2022-41881&#xff09;&…

【数据结构】Java实现顺序表

文章目录线性表顺序表顺序表的模拟实现1、新增元素,默认在数组最后新增2、判定是否包含某个元素3、查找某个元素对应的位置4、获取顺序表长度5、在 pos 位置新增元素6、获取 pos 位置的元素7、给 pos 位置的元素设为 value8、删除第一次出现的关键字key9、清除顺序表线性表 什…

接口性能测试,这个还真有用啊。

目录&#xff1a;导读 一、概述 二、为什么要做接口压力测试 三、接口压力测试的局限性 四、谁来做接口压力测试 五、如何做接口压力测试 六、如何设计接口压力测试方案 七、压力测试报告应该包含哪些结果 八、如何解读压力测试的结果 九、如何根据测试结果定位性能问…