Django开发之基础篇
Django基础篇
- 一、Django学习之路由
- 二、Django学习之视图
- 三、Django学习之静态资源
一、Django学习之路由
在 Django 中,路由(URL 映射)是将请求与视图函数关联起来的关键部分。路由定义了如何将特定的 URL 请求映射到 Django 应用程序中的视图函数,从而确定哪个视图函数应该处理请求。
-
URL配置文件:Django 中的路由由一个或多个 URL 配置文件定义。通常,每个应用程序都有一个名为 urls.py 的 URL 配置文件,用于定义该应用程序的路由规则。此外,Django 项目也有一个根级别的 URL 配置文件,通常命名为 urls.py。
-
导入必要的模块:在 URL 配置文件的顶部,需要导入必要的模块,包括 django.urls 和视图函数,以便进行路由配置。
from django.urls import path from . import views -
定义 URL 路由规则:在 URL 配置文件中,你可以使用 path() 函数或 re_path() 函数来定义 URL 路由规则。这些函数将 URL 模式与相应的视图函数关联起来。以下是一个简单的示例:
urlpatterns = [path('home/', views.home_view, name='home'),path('about/', views.about_view, name='about'), ]在这个示例中,我们定义了两个 URL 路由规则。当用户访问 /home/ 时,将调用 views.home_view 视图函数;当用户访问 /about/ 时,将调用 views.about_view 视图函数。
-
URL 参数:你可以在路由中包含参数,以便从 URL 中捕获数据。例如,你可以定义一个接受文章 ID 的路由规则:
path('article/<int:article_id>/', views.article_detail, name='article_detail') -
命名路由:给路由规则命名是一种良好的实践,它允许你在模板和视图中使用可读性更好的名称来引用路由。上面示例中的 name 参数用于给每个路由规则命名,例如 name=‘home’ 和 name=‘about’。
-
URL 反向解析:Django 提供了 URL 反向解析的功能,允许你根据命名的路由生成相应的 URL。这对于在模板中生成链接或在视图中重定向到其他页面非常有用。你可以使用 {% url ‘name’ %} 模板标签或 reverse(‘name’) 视图函数来进行 URL 反向解析。
-
应用命名空间:如果你的 Django 项目包含多个应用程序,可以使用应用命名空间来避免路由冲突。在应用的 URL 配置文件中使用 app_name 来定义应用的命名空间,然后在根级别的 URL 配置文件中使用该命名空间来引用应用的路由规则。
# 应用的 URL 配置文件 app_name = 'myapp'# 根级别的 URL 配置文件 path('myapp/', include('myapp.urls', namespace='myapp'))
二、Django学习之视图
在 Django 中,视图(Views)是处理 Web 请求和返回 Web 响应的核心部分。视图函数负责接收 HTTP 请求,执行必要的逻辑,然后返回 HTTP 响应。
-
创建视图函数:在 Django 中,你需要编写 Python 函数来定义视图。这些函数通常存储在应用程序的 views.py文件中。一个简单的 Django 视图函数如下:
from django.http import HttpResponsedef hello(request):return HttpResponse("Hello, Django!")这个视图函数接收一个 request 参数,该参数包含了关于当前请求的信息,然后返回一个 HttpResponse 对象,其中包含了要返回给客户端的内容。
-
HTTP 请求方法:视图函数可以根据 HTTP 请求方法来执行不同的逻辑。例如,你可以使用 request.method 来检查请求的方法,如 GET、POST、PUT、DELETE 等,然后根据不同的方法执行相应的操作。
-
URL 路由和视图映射:在 Django 中,你需要将 URL 请求映射到相应的视图函数。这通常通过在 URL 配置文件中定义路由规则来实现。每个路由规则将一个 URL 模式与一个视图函数关联起来。
from django.urls import path from . import viewsurlpatterns = [path('hello/', views.hello, name='hello'), ]在上述示例中,path(‘hello/’, views.hello, name=‘hello’) 将 /hello/ URL 映射到 views.hello 视图函数。
-
请求参数和上下文:视图函数可以接收来自 HTTP 请求的参数,例如 URL 参数、表单数据或 JSON 数据。这些参数通常通过 request 对象来获取。视图函数还可以定义上下文数据,以便将数据传递给模板渲染。
def test(request,pid):# 1、当前urlprint(request.path_info)# 2、URL传递参数print(request.GET)# 3、请求方式print(request.method)# 4、如果post请求,传递请求体(原始数据)print(request.body)# 5、请求头print(request.headers)# 6、cooker值print(request.COOKIES)# 7、其他值print(request.resolver_match)return HttpResponse("ok") -
返回响应:视图函数的主要任务是返回一个 HTTP 响应。你可以使用 HttpResponse 对象来返回纯文本、HTML、JSON 等不同类型的响应。Django 还提供了许多其他类型的响应对象,如 JsonResponse、Redirect 等,以便根据需要返回不同类型的响应。
-
模板渲染:通常,视图函数会渲染 HTML 模板并将数据传递给模板以进行渲染。Django 使用模板引擎来将数据嵌入到 HTML 模板中,生成最终的响应。你可以使用 render 函数来渲染模板。
from django.shortcuts import renderdef my_view(request):data = {'name': 'John'}return render(request, 'my_template.html', context=data) -
装饰器:Django 允许你使用装饰器来修改视图函数的行为,例如要求用户登录、缓存响应等。常用的装饰器包括 @login_required 和 @cache_page。
-
类视图:除了函数视图,Django 还支持基于类的视图(Class-Based Views,CBVs),它们提供了更多的可复用性和结构化的方式来编写视图。常见的类视图包括 DetailView、ListView、CreateView 等。
def user(request):if request.method == "GET":passelif request.method == "POST":passfrom django.views import View class UserView(View):def get(self):passdef post(self):pass
三、Django学习之静态资源
在 Django 中,静态资源包括 CSS、JavaScript、图像和其他静态文件,它们用于构建和美化你的网站。配置和提供静态资源对于一个 Web 应用程序至关重要。
-
项目目录结构:首先,确保你的 Django 项目具有以下典型的目录结构:
myproject/ ├── myproject/ │ ├── settings.py │ ├── urls.py ├── myapp/ │ ├── static/ │ │ ├── myapp/ │ │ │ ├── css/ │ │ │ ├── js/ │ │ │ ├── images/ ├── templates/ │ ├── ... ├── manage.py在上述结构中,myapp 是你的应用程序,static 目录用于存储静态资源,templates 目录用于存储 HTML 模板。
-
配置静态文件路径:在 Django 项目的 settings.py 文件中,确保你已经正确配置了静态文件路径。通常,你需要设置以下两个设置:
STATIC_URL = '/static/' # 静态文件的URL前缀 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'myapp/static')] # 静态文件的存储位置STATIC_URL 定义了静态文件在 URL 中的前缀。默认情况下,它设置为 /static/,这意味着你的静态文件将通过 http://yourdomain.com/static/ 访问。
STATICFILES_DIRS 指定了静态文件的存储位置,这里设置为应用程序的 static 目录。Django 将在这些目录中查找静态文件。
-
使用静态文件:在 HTML 模板中,你可以使用 {% load static %} 模板标签来加载静态文件。然后,可以使用 {% static ‘path/to/your/static/file’ %} 标签来引用静态文件。例如:
<!DOCTYPE html> <html> <head><link rel="stylesheet" type="text/css" href="{% static 'myapp/css/style.css' %}"> </head> <body><img src="{% static 'myapp/images/logo.png' %}" alt="Logo"> </body> </html>这里,{% static ‘path/to/your/static/file’ %} 将根据 STATIC_URL 配置生成正确的 URL。
-
收集静态文件:在开发过程中,Django 的开发服务器可以自动提供静态文件。但在生产环境中,通常需要收集所有静态文件到一个集中的位置,并由 Web 服务器提供。你可以使用以下命令来收集静态文件:
python manage.py collectstatic这将会将所有静态文件从各个应用程序的 static 目录收集到一个目录中,通常是你的项目目录下的 static 目录。
-
使用 CDN(内容分发网络):在生产环境中,可以考虑使用 CDN 来提供静态资源,以加速资源加载并减轻服务器负担。在模板中使用绝对 URL 或 CDN URL 来引用静态资源。
相关文章:
Django开发之基础篇
Django基础篇 一、Django学习之路由二、Django学习之视图三、Django学习之静态资源 一、Django学习之路由 在 Django 中,路由(URL 映射)是将请求与视图函数关联起来的关键部分。路由定义了如何将特定的 URL 请求映射到 Django 应用程序中的视…...
在 centos7 上安装Docker
1、检查linux内核 Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。 uname -r 2、使用 root 权限登录 Centos…...
基于SpringBoot的大学城水电管理系统
目录 前言 一、技术栈 二、系统功能介绍 管理员模块的实现 领用设备管理 消耗设备管理 设备申请管理 状态汇报管理 用户模块的实现 设备申请 状态汇报 用户反馈 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛…...
微信小程序 movable-view 控制长按才触发拖动 轻轻滑动页面正常滚动效果
今天写 movable-areamovable-view遇到了个头疼的问题 那就是 movable-view 监听了用户拖拽自己 但 我们小程序 上下滚动页面靠的也是拖拽 也就是说 如果放在这里 用户拖动 movable-view部分 就会永远触发不了滚动 那么 我们先可以 加一个 bindlongpress"longpressHandler…...
mysql面试题27:数据库中间件了解过吗?什么是sharding jdbc、mycat,并且讲讲怎么使用?
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:数据库中间件了解过吗,比如sharding jdbc、mycat? 我知道的数据库中间件有以下这些: MySQL Proxy:MySQL Proxy是一个开源的数据库中间件,它位…...
DBCO Sata650,二苯并环辛烷Sata650,Seta-650-DBCO
产品简介: CAS号:N/A 中文名:二苯并环辛烷Sata650 英文名:DBCO Sata650,Seta-650-DBCO 化学式:N/A 分子量:1431.85 纯度标准:95% 供应商:陕西新研博美生物科技有限公司 存储…...
JFLASH基本使用总结
注意,不同版本的操作略有不同,本教程以J-Flash V5.12f为例。 烧录文件 如果是刚打开J-Flash,会弹出这样的一个工程选择界面,可以选择已有工程,或者创建新的工程,我们这里选择创建新工程。 注意࿰…...
具身智能(Embodied AI)
前言 图灵奖得主、上海期智研究院院长姚期智认为,人工智能领域下一个挑战将是实现“具身通用人工智能”,即如何构建能够通过自我学习掌握各种技能并执行现实生活中的种种通用任务的高端机器人。清华大学计算机系教授张钹院士,也在某产业智能论…...
C语言的文件写入、读取
目标1:使用C语言的文件操作来实现一次性将输入的数据转换为字符串写入文件,然后逐行读取并进行操作。 模板 #include <stdio.h>int main() {// 打开文件以写入数据FILE *file fopen("data.txt", "w");if (file NULL) {pri…...
CART 算法——决策树
目录 1.CART的生成: (1)回归树的生成 (2)分类树的生成 ①基尼指数 ②算法步骤 2.CART剪枝: (1)损失函数 (2)算法步骤: CART是英文“class…...
CF1877A Goals of Victory
题目是说,有n个队伍进行足球赛,两两之间进行一场足球赛,会有一个积分,a:b,题目所说的efficiency表示的是一个队伍的得分减去对手队伍的得分 #include<bits/stdc.h> using namespace std;int num[110];int main(…...
018-第三代软件开发-整体介绍
第三代软件开发-整体介绍 文章目录 第三代软件开发-整体介绍项目介绍整体介绍Qt 属性系统QML 最新软件技术框架 关键字: Qt、 Qml、 属性、 Qml 软件架构 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object …...
储存数据文本json的读写
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一、json文本介绍二、json文本的应用三、json文本的操作1、环境配置2、写入文件3、读取文件4、文件格式解析注意的点参考链接前言 认知有限,望大家…...
Java之动态代理的详细解析
2. 动态代理 2.1 好处: 无侵入式的给方法增强功能 2.2 动态代理三要素: 1,真正干活的对象 2,代理对象 3,利用代理调用方法 切记一点:代理可以增强或者拦截的方法都在接口中,接口需要写在…...
github Release 下载加速,绿色合法,遥遥领先
你有没有这样一个困惑,当你寻找了很久终于找到一个解决问题的方案,发现这个工具在 GitHub 上,接下来等待我们的就是遥遥无期的龟速下载。 文章目录 前言下载测试加速下载操作 视频讲解 遥遥领先 前言 GitHub 作为程序员的知识宝库ÿ…...
RabbitMQ消息中间件概述
1.什么是RabbitMQ RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等&…...
12V手电钻保护板如何接线演示
爱做手工的小伙伴们肯定会用到手电钻,那么电池消耗完了,或要换的,或要自己动手做几个备用电源,关键点就是电路保护板的接线。废话不多说,直接上板子看实操。 文章目录 一、线路板图1、输入接线2、输出接线 二、接线方法…...
基于SpringBoot的教学辅助平台
目录 前言 一、技术栈 二、系统功能介绍 学生信息管理 教师信息管理 课程信息管理 科目分类管理 班级分类管理 课程作业管理 交流论坛管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理…...
Qt 读写数据流文件(转 CppGuiProgrammingWithQt4)
读取文件: update 20140525:添加线程处理,在读取大文件时优化,防止 app 出现 application 假死状态。 bool SpreadSheet::readFile(const QString &filePath){QFile file(filePath);if ( !file.open(QIODevice::ReadOnly)) …...
Pygame中将鼠标形状设置为图片2-2
3 编写主程序 在主程序中,首先创建屏幕并且完成一些准备工作,之后在while循环中不断更新sprite实例即可。 3.1 创建屏幕及准备工作 创建屏幕及准备工作的代码如图5所示。 图5 创建屏幕及准备工作 其中,第20行代码调用pygame.mouse模块中的…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
