Python 全栈体系【三阶】(三)

第一章 Django

七、静态文件

1. 概述

静态文件是指在WEB应用中的图像文件、CSS文件、Javascript文件。

2. 静态文件的配置

settings.py中关于静态文件的配置如下:

STATICFILES_DIRS = [BASE_DIR , 'static',
]STATIC_URL = '/static/'

其中:

  • STATICFILES_DIRS列表用于指定静态文件在服务器的存储位置,如果指定了多个路径,在访问静态文件时将依次进行查找。
  • STATIC_URL是指访问静态文件时要使用的URL

3. 访问静态文件

访问静态文件时需要以下两步:

第一步:在模板文件中加载static ,语法结构为:

{% load static %}

第二步:访问静态文件,语法结构为:

<link rel="stylesheet" href="{% static 'styles/reset.css' %}"><img src="{% static 'images/logo.png' %}"><script src="{% static 'scripts/common.js' %}">

补充:

add过滤器

{{ variable|add:value}}

该过滤器既可以完成数学的加法运算,也可以完成字符串的拼接。

如:

{% for product in proucts %}
<p>{{product.name}}</p>
<p><img src="{% static 'images'|add:product.image%}"></p>
{% endfor%}

只要是在模板文件中引用图片的路径、CSS文件的路径及JS文件的路径,都必须使用{% static %} 标签。但独立的CSS文件或JS文件内要引用其他的文件(如图片文件),则直接使用相对路径即可。

common.css的文件代码如下:

.logo{width:380px;height:240px;background:url(../images/logo.png)
}

但假设该类直接书写在index.html的话,则需要写成:

<html><head><style>.logo{width:380px;height:240px;background:url({% static 'images/logo.png' %})}</style></head><body>...</body>
</html>

八、应用

1. 概述

Django中,每个项目的独立业务模块就称为一个应用。在每个应用中可以包含其相对独立的模板、静态文件、视图函数、路由等。

2. 创建应用

Django创建应用通过以下两步实现:

2.1 第一步:创建应用
python3 manage.py startapp name

示例如下:

python3 manage.py startapp users
2.2 第二步:注册应用

settings.pyINSTALLED_APPS列表中添加已创建的应用,如:

INSTALLED_APPS = [# ...'users'
]

应用的目录结构如下:

users
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│   └── __init__.py
├── models.py
├── tests.py
└── views.py

其中:

  • views.py指视图函数的处理文件
  • models.py指模型类文件
  • migrations是数据迁移目录

一般情况下,每个应用目录都"必须"存在urls.py文件,用于存储应用的路由信息。

2.3 分布式路由

include()函数

include()函数位于django.urls包内:

from django.urls import include

其作用是允许引用其他的路由文件(URLConfs)。每当Django遇到include()时,它会截断与此项匹配URL,将剩余的字符串发送到其他的路由文件进行处理。

在这里插入图片描述

在启用settings.pyTEMPLATES选项中的APP_DIRS后,在搜索模板时将先行搜索根目录下的templates ,然后依次搜索应用目录下的 templates目录。

如果应用的独立的,也就是说这个应用后续还可能被其他项目使用,那么建议:模板文件、静态资源等存储应用目录内。如果项目是用于特定目的的,那么这些静态资源最好存储在项目目录内。

九、HTTP协议

1. 请求

<request-line>
<headers>
<blank-line>
[<request-body>]
1.请求行包含请求类型,文件的路径及HTTP版本号
2.请求头包含附加的信息
3.请求体

2. 响应

<status-line>
<headers>
<blank-line>
<response-body>1.状态行,包括HTTP协议及服务器响应的状态码
2.响应头
3.响应体

3. HttpRequest对象

当一个页面被请求时,Django会自动创建一个HttpRequest对象,这个对象中包含了请求的元数据。而且这个对象将作为视图函数的第一个参数。视图函数的基本结构如下:

def view_function_name(request):request.属性request.方法()......

属性:

HttpRequest.method,用于获取HTTP请求的类型,返回值为大写字母,如GETPOST

HttpRequest.GET,将返回所有URL地址栏参数形成的对象,该对象类似于字典对象 – QueryDict

HttpRequest.POST,将返回表单以POST方式提交所有数据组成的对象,该对象类似于字典对象 – QueryDict

HttpRequest.COOKIES,返回所有的cookies信息

HttpRequest.FILES,获取所有经过HTTP POST上传文件的信息

重要提示:

在通过表单实现文件上传时,表单必须注意以下事项:

1.表单只能通过POST提交

2.必须设置表单的enctype="multipart/form-data"属性

表单形如:

<form method="post" enctype="multipart/form-data">{% csrf_token %}<input type="file" name="avatar">...
</form>

HttpRequest.session,返回所有的会话(session)信息

方法

HttpRequest.get_host()用于获取主机信息

HttpRequest.get_port()用于获取主机的端口号

HttpRequest.get_full_path()用于获取路径,包含有查询关键字

4. HttpResponse

HttpResponse对象是程序员的责任。理论上来说,每个HTTP请求都应该存在一个响应对象。

HttpResponse对象的构造函数是:

HttpResponse(content='',content_type=None,status=None)

其中:

content代表响应的内容

content_type代表响应的类型,默认为text/html

status代表响应的状态码,默认为200

常见的content-type属性值有:

MIME类型说明
text/plain纯文本文件
text/htmlHTML文件
text/cssCSS文件
text/javascriptJavaScript文件
application/jsonJSON数据
image/gifGIF图像
image/jpgJPGJPEG图像
image/pngPNG图像

JSON的官网:

https://www.json.org/json-zh.html

子类

子类描述
HttpResponseRedirect重定向
HttpResponseNotModified未修改
HttpResponseBadRequest错误请求
HttpResponseServerError服务器错误
HttpResponseNotFound对象未找到

十、QueryDict对象

在这里插入图片描述

get()

get()方法用于返回指定键的值,语法结构为:

QueryDict.get(key)

getlist()
getlist()方法用于返回指定值的值所组成的列表,其语法结构是:

QueryDict.getlist(key)

itmes()将返回由键名和键值组成的列表,语法结构是:

QueryDict.items()

values()将近回由键值组成的列表,语法结构是:

QueryDict.items()

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java面试题,有synchronized锁,threadlocal、数据可以设置默认值、把redis中的json转为对象

有面试题&#xff0c;有synchronized锁&#xff0c;threadlocal 一、面试题小记二、加锁synchronized1. 先看代码2. synchronized 讲解2.1. 同步代码块2.2. 同步方法2.3. 锁的选择和影响2.4. 注意事项2.5 锁的操作&#xff0c;手动释放锁&#xff0c;显式地获取锁&#xff08;属…

【llama3.1】ollama的使用--本地部署使用llama3.1模型

快速入门 安装完成ollama后,在命令行窗口输入 ollama run llama3 上图表示 Ollama 正在下载 llama3 任务所需的资源文件,并显示了当前的下载进度、速度和预计剩余时间。这是 Ollama 在准备运行 llama3 任务之前所需的步骤。 上面的步骤完成后,就可以在本地进行聊天了,…

Golang | Leetcode Golang题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; func missingNumber(nums []int) int {n : len(nums)total : n * (n 1) / 2arrSum : 0for _, num : range nums {arrSum num}return total - arrSum }

Xlua原理 二

一已经介绍了初步的lua与C#通信的原理&#xff0c;和xlua的LuaEnv的初始化内容。 这边介绍下Wrap文件。 一.Wrap介绍 导入xlua后可以看到会多出上图菜单。 点击后生成一堆wrap文件&#xff0c;这些文件是lua调用C#时进行映射查找用的中间代码。这样就不需要去反射调用节约性…

Vue中的diff算法

文章目录 diff算法是什么比较方式源码分析patchpatchVnodeupdateChildren小结Vue3中diff算法优化diff算法是什么 diff算法是一种通过同层的树节点进行比较的高效算法 其有两个特点: 比较只会在同层级进行,不会跨层级比较在dff比较的过程中,循环从两边向中间比较(首位交叉…

Linux系统下安装MySQL

前言&#xff1a; 本篇教程是使用Centos8来进行安装部署&#xff0c;如果使用的Linux系统发行版不同安装部署过程中可能会有差异&#xff0c;相同环境下可以跟着操作流程进行部署。本篇文章的主要目的是为了学习分享使用如有疑问欢迎提出并共同讨论。 1、安装前的准备工作 移除…

sql的执行流程

执行过程分成两层&#xff0c;一层是server层&#xff0c;主要进行连接服务&#xff0c;和分析语句&#xff0c;执行sql 具体流程是 首先与用户通过连接器建立连接&#xff0c;然后将sql查询语句在查询缓存中查找&#xff0c;如果查找处理过相同的语句将&#xff0c;直接返回数…

用uniapp 及socket.io做一个简单聊天app 2

在这里只有群聊&#xff0c;二个好友聊天&#xff0c;可以认为是建了一个二人的群聊。 const express require(express); const http require(http); const socketIo require(socket.io); const cors require(cors); // 引入 cors 中间件const app express(); const serv…

Nginx 如何处理请求的流量削峰?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; 文章目录 Nginx 如何处理请求的流量削峰&#xff1f;一、什么是流量削峰二、Nginx 实现流量削峰的基本原理&#xff08;一&#xff09;反向代理与负载均衡&#xff08;二&…

微服务实战系列之玩转Docker(五)

前言 在我们日常的工作生活中&#xff0c;经常听到的一句话&#xff1a;“是骡子是马拉出来遛遛”。目的是看一个人/物是不是名副其实。我们在使用docker时&#xff0c;也要看看它究竟是如何RUN起来的。当面试官问你的时候&#xff0c;可以如是回答&#xff0c;保你“一文通关…

【python】OpenCV—Open URL Images

文章目录 1、需求描述2、方法一&#xff0c;numpyurlopen3、方法二&#xff0c;scikit-learn4、涉及到的库urllib.request.urlopenskimage.io.imread 5、参考文章 1、需求描述 给出一个 url 链接&#xff0c;显示该链接对应的图片 2、方法一&#xff0c;numpyurlopen # 导入…

Linux应用——socket函数及TCP通信

网络通信实质上也是实现进程间通信&#xff0c;只是与之前进程间通信不同的是&#xff0c;现在在不同的计算机上进行进程间通信。比如&#xff1a;利用QQ工具实现聊天&#xff0c;在两个电脑上有不同的QQ进程之间在通信。而网络通信是如何使用进程间通信呢&#xff1f;采用的是…

力扣高频SQL 50 题(基础版)第一题

文章目录 力扣高频SQL 50 题&#xff08;基础版&#xff09;第一题1757.可回收且低脂的产品题目说明思路分析实现过程准备数据&#xff1a;实现方式&#xff1a;结果截图&#xff1a; 力扣高频SQL 50 题&#xff08;基础版&#xff09;第一题 1757.可回收且低脂的产品 题目说…

pdf2docx - pdf 提取内容转 docx

文章目录 一、关于 pdf2docx主要功能限制 二、安装1、 PyPI2、从remote安装3、从源码安装4、卸载 三、转化 PDF例 1: convert all pages例 2: 转换指定页面例 3: multi-Processing例 4: 转换加密的pdf 四、提取表格五、命令行交互1、按页面范围2、按页码3、Multi-Processing 六…

Java之集合底层-数据结构

Java集合之数据结构 1 概述 数据结构是计算机科学中研究数据组织、存储和操作的一门学科。它涉及了如何组织和存储数据以及如何设计和实现不同的数据操作算法和技术。常见的据结构有线性数据结构&#xff08;含数组、链表、栈和队列等&#xff09;&#xff0c;非线性数据结构…

探索算法系列 - 双指针

目录 移动零&#xff08;原题链接&#xff09; 复写零&#xff08;原题链接&#xff09; 快乐数&#xff08;原题链接&#xff09; 盛最多水的容器&#xff08;原题链接&#xff09; 有效三角形的个数&#xff08;原题链接&#xff09; 查找总价格为目标值的两个商品&…

数据库表结构创建

一、原型图 二、分析 1、天气&#xff0c;值字段只有实测值&#xff0c;可用一个字段表示&#xff08;单位、来源同上&#xff09; 2、气温有默认值与实测值两个选项&#xff0c;一个字段无法表示默认值与实测值&#xff08;单位&#xff0c;来源同上&#xff09; 3、因为有…

SpringMVC 控制层框架-下

五、SpringMVC其他扩展 1. 异常处理机制 1.1 异常处理概念 开发过程中是不可避免地会出现各种异常情况&#xff0c;例如网络连接异常、数据格式异常、空指针异常等等。异常的出现可能导致程序的运行出现问题&#xff0c;甚至直接导致程序崩溃。因此&#xff0c;在开发过程中&a…

LoFTR关键点特征匹配算法环境构建与图像匹配测试Demo

0&#xff0c;LoFTR CVPR 2021论文《LoFTR: Detector-Free Local Feature Matching with Transformers》开源代码 1&#xff0c;项目主页 LoFTR: Detector-Free Local Feature Matching with Transformers 2&#xff0c;GItHub主页 GitHub - zju3dv/LoFTR: Code for "…

Vue 状态管理 Vue CLI

Vue 状态管理 & Vue CLI 1、状态管理2、集中状态管理2.1 Vuex2.1.1 Vuex核心概念2.1.2 Vuex Store实例2.1.3 Vuex Getter2.1.4 Vuex Mutation2.1.4 Vuex Actions2.1.4 Vuex Module 2.2 Pinia2.2.1功能增强 3、Vuex 实现原理4、Pinia 实现原理5、CLI5.1 实现 1、状态管理 将…