Web应用框架-Django应用基础
1. 认识Django
Django是一个用Python编写的开源高级Web框架,
旨在快速开发可维护和可扩展的Web应用程序。
使用Django框架的开发步骤:
1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护
Django官网:
Django documentation | Django documentation | Django
URL调度器:
URL调度器 | Django 文档 | Django
2. 安装Django框架
以管理员身份运行终端,并安装django框架:
pip3 install django -i https://pypi. tuna. tsinghua. edu.cn/simple/
显示已安装的 Django 包的详细信息:
pip3 show django
3. 新建并运行Django项目
3.1 新建
新建文件夹内 shift+鼠标右键 在此处打开 Powershell 窗囗(S)
新建一个项目,名称为 my_project :
django-admin startproject my_project
3.2 运行
pycharm终端中运行新建好的项目:
python manage.py runserver
4. Django项目结构
| 文件名 | 用途 |
|---|---|
__init__.py | 空目录,表示该目录应该被视为一个 Python 包 |
asgi.py | 部署项目配置 |
settings.py | 项目的配置和设置,如数据库连接、时区、使用的应用程序等。 |
urls.py | 定义项目的 URL 分发器,即 URL 到视图函数的映射。 |
wsgi.py | 部署项目。 |
db.sqlite3 | sqlite数据库 |
manage.py | 命令行管理工具,执行各种 Django 管理任务 |
5. 编写Django视图
在setting中,配置访问路径范围:
DEBUG = True 是否支持debug运行
ALLOWED_HOSTS = ['*'] 配置访问路径范围 " * " 表示任意
import os# SECURITY WARNING: don't run with debug turned on in production!DEBUG = True #是否支持debug运行ALLOWED_HOSTS = ['*'] #配置访问路径范围 *:任意
6. 开发新模块
6.1 创建新hello模块
在pycharm终端中输入:
python manage.py startapp hello
执行这个命令后,Django 会在项目目录下创建一个名为 hello 的新目录,
并在该目录中生成一组初始文件
6.2 hello world!
urls.py:浏览器访问地址
参数1:浏览器匹配的字符串
参数2:调用的模块的函数
# 配置文件
from django.contrib import admin
from django.urls import path, include
from hello.views import hello_world # 引入模块函数urlpatterns = [path('admin/', admin.site.urls),path('hello/', hello_world),
]
views.py:响应数据工具
由django提供,用于向浏览器返回数据
def hello_world(request): #业务函数
return HttpResponse("Hello World!") #向浏览器响应数据
from django.http import HttpResponse
def hello_world(request): #业务函数return HttpResponse("Hello World!") #向浏览器响应数据
7.多级路由
7.1 一级路由(test_django)
一级路由转二级路由:
from django.contrib import admin
from django.urls import path
from django.urls import includeurlpatterns = [path('admin/', admin.site.urls),path('hello/',include('hello.urls'))
]
7.2 二级路由(hello)
在hello文件下创建python文件,名为 “ urls ”
7.2.1 URL 配置
在 hello\urls.py 下,定义 URL 路由
from django.urls import path
from hello.views import hello_world
from hello.views import hello_chinaurlpatterns = [path('world/', hello_world,name='hello_world'),path('china/', hello_china,name='hello_china'),
]
7.2.2 响应数据工具
工具由django提供,用于向浏览器返回数据
from django.http import HttpResponsedef hello_world(request): #业务函数return HttpResponse("Hello World!") #向浏览器响应数据def hello_china(request):return HttpResponse("Hello China!")
小结:
url地址分为不同的级别,其优点:
1.地址目录结构清晰,便于维护
2.高内聚、低耦合:当某一模块被修改时,其他模块不受影响
8.函数视图
创建静态页面
新建 temple/ index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1>我的HTML标签</h1>
</body>
</html>
8.1 渲染HTML页面
8.1.1 views.py:
def hello_html(request):html = """<html><body><h1 style = "color:#f00;">Hello HTML!</h1></body> </html>"""return HttpResponse(html)
8.1.2 hello\urls.py:
from django.urls import path
from hello.views import hello_html
urlpatterns = [path('html/',hello_html,name='hello_html'),
]
8.1.3 代码效果:

8.1.4 配置TEMPLATES设置
settings.py:
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR / 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]
8.2 article_list 函数
8.2.1 views.py:
def article_list(request,month):return HttpResponse('article:{}'.format(month))
8.2.2 hello\urls.py:
path('article/<int:month>/',article_list,name='article_list'),
8.2.3 代码效果:

8.3 search函数/获取get参数
8.3.1 views.py:
GET:get请求 ; get:获得数据
def search(request):name = request.GET.get('name','')print(name)return HttpResponse('查询成功')
8.3.2 hello\urls.py:
path('search/',search,name='search'),
8.3.3 代码效果:

8.4 render_to_string()函数
8.4.1 语法结构:
render_to_string(template_name,context=None,request=None,using=None)
| 参数 | 作用 |
|---|---|
| template name | 模板名称 |
| context | 模板上下文对象(字典dict) |
| request | 请求对象 |
| using | 模板引擎名称(如:Jinja2) |
8.4.2 views.py:
def render_str(request):page_name = 'index.html'html = render_to_string(template_name=page_name)return HttpResponse(html)#或者def render_str(request):return render(request,'index.html')
8.4.3 hello\urls.py:
path('render/str/',render_str,name='render_str'),
8.4.4 代码效果:

8.5 render()函数
8.5.1 语法结构:
| 参数 | 作用 |
|---|---|
| request | 请求对象 |
| template name | 模板名称 |
| context | 模板上下文对象(dict) |
| content type | MIME类型,默认为text/html |
| status | HTTP状态码 |
| using | 模板引擎名称(如:Jinja2) |
8.5.2 views.py:
def render_html(request):return render(request,'index.html')
8.5.3 hello\urls.py:
path('render/html/',render_html,name='render_html'),
8.5.4 代码效果:

相关文章:
Web应用框架-Django应用基础
1. 认识Django Django是一个用Python编写的开源高级Web框架, 旨在快速开发可维护和可扩展的Web应用程序。 使用Django框架的开发步骤: 1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护 Django官网: Djang…...
qt QMainWindow详解
一、概述 QMainWindow继承自QWidget,并提供了一个预定义的布局,将窗口分成了菜单栏、工具栏、状态栏和中央部件区域。这些区域共同构成了一个功能丰富的主窗口,使得应用程序的开发更加简单和高效。 二、QMainWindow的常用组件及功能 菜单栏&…...
第二单元历年真题整理
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 参考答案 1. A 2. A 3. A 4. D 5. D 6. D 解析: 栈和队列是两个不一样的结构,不能放在一起表示 7. B 8. C 解析: S --> A0 | B1 --> (S1 | 1) 0 | (S0 | 0)1 --> S10 | 10 | S…...
Ubuntu下载protobuf
1 安装依赖库 sudo apt-get install autoconf automake libtool curl make g unzip -y2 下载protobuf ProtoBuf 下载地址:https://github.com/protocolbuffers/protobuf/releases 如果要在 C 下使⽤ ProtoBuf,可以选择cpp.zip 其他语言选择对应的链接即可 希望支持…...
【算法优化】混合策略改进的蝴蝶优化算法
摘要 蝴蝶优化算法 (Butterfly Optimization Algorithm, BOA) 是一种新兴的智能优化算法,其灵感来自蝴蝶的觅食行为。本文基于经典BOA,通过引入混合策略进行改进,从而提高其在全局寻优和局部搜索中的性能。实验结果表明,改进的蝴…...
什么是标准差?详解
文章目录 一、什么是标准差?二、公式三、举个例子🌰参考 一、什么是标准差? 在统计学中,标准差(Standard Deviation)是用于衡量变量值围绕其平均值变化程度的指标。低标准差表示这些值通常接近平均值&…...
C++20中头文件syncstream的使用
<syncstream>是C20中新增加的头文件,提供了对同步输出流的支持,即在多个线程中可安全地进行输出操作,此头文件是Input/Output库的一部分。包括: 1.std::basic_syncbuf:是std::basic_streambuf的包装器(wrapper)&…...
判断特定时间点开仓的函数(编程技巧)
如何使用最新的MQL4语言创建并应用一个判断当前是否可以开启或增加交易仓位的函数。通过详细讲解函数的代码实现、核心功能及其在实际交易策略中的调用方法。 函数代码 以下是一个用MQL4编写的函数,用于检测在特定时间点是否可以开仓或增仓。 extern int MagicNumb…...
如何新建一个React Native的项目
要新建一个 React Native 项目,你可以使用 React Native 官方推荐的工具 React Native CLI 或者 Expo。两者的区别在于:React Native CLI 提供更多对原生代码的访问权限,适合构建复杂的应用;而 Expo 是一个开发工具链,…...
学习--图像信噪比
目录 图像信噪比 图像信噪比 图像信噪比的计算公式: 其中, M M M和 N N N分别表示图像长度和宽度上的像素数。 f ( i , j ) f(i,j) f(i,j) 和 g ( i , j ) g(i,j) g(i,j)分别是原始图像和去噪后的图像在点 ( i , j ) (i,j) (i,j)处的像素值。 信噪…...
【2024CANN训练营第二季】使用华为云体验AscendC_Sample仓算子运行
环境介绍 NPU:Ascend910B2 环境准备 创建Notebook 华为云选择:【控制台】-【ModelArts】 ModelArts主页选择【开发生产】-【开发空间】-【Notebook】 页面右上角选择【创建Notebook】 选择资源 主要参数 规格:Ascend: 1*ascend-snt…...
使用 NumPy 和 Matplotlib 实现交互式数据可视化
使用 NumPy 和 Matplotlib 实现交互式数据可视化 在数据分析中,交互式可视化可以更好地帮助我们探索和理解数据。虽然 Matplotlib 是静态绘图库,但结合一些技巧和 Matplotlib 的交互功能(widgets、event handlers),我…...
TCP 攻击为何在 DDoS 攻击中如此常见
分布式拒绝服务攻击(Distributed Denial of Service, DDoS)是一种常见的网络攻击手段,通过大量请求使目标服务器过载,导致合法用户无法访问服务。在众多 DDoS 攻击类型中,TCP 攻击尤为常见。本文将探讨 TCP 攻击在 DDo…...
未来汽车驾驶还会有趣吗?车辆动力学系统简史
未来汽车驾驶还会有趣吗?车辆动力学系统简史 本篇文章来源:Schmidt, F., Knig, L. (2020). Will driving still be fun in the future? Vehicle dynamics systems through the ages. In: Pfeffer, P. (eds) 10th International Munich Chassis Symposiu…...
LCD手机屏幕高精度贴合
LCD手机屏幕贴合,作为智能手机生产线上至关重要的一环,其质量直接关乎用户体验与产品竞争力。这一工艺不仅要求屏幕组件间的无缝对接,达到极致的视觉与触觉效果,还需确保在整个生产过程中,从材料准备到最终成品&#x…...
15_卸载操作
在之前我们就提到,首次渲染之后,后续如果再调用 render 函数时,传递的 vnode 为 null 则表示是卸载。 当时我们是直接通过执行 container.innerHTML ‘’ 来实现的,但是这样做会有以下几个问题,如下: 容…...
ONLYOFFICE 文档8.2版本已发布:PDF 协作编辑、改进界面、性能优化等更新
ONLYOFFICE 在线编辑器最新版本已经发布,其中包含30多个新功能和500多个错误修复。阅读本文了解所有更新。 关于 ONLYOFFICE 文档 ONLYOFFICE 是一个开源项目,专注于高级和安全的文档处理。坐拥全球超过 1500 万用户,ONLYOFFICE 是在线办公领…...
redis的string是怎么实现的
Redis 的 String 类型是最基本的数据类型,底层通过多种方式实现,能够存储字符、整数、浮点数等各种形式的值。String 数据结构的实现基于 Redis 的简单动态字符串(SDS),同时在处理不同的数据类型时也进行了优化。 1. …...
基于STM32设计的智能婴儿床(华为云IOT)(244)
文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成【4】ESP8266工作模式配置1.2 设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要1.4 开发工具的选择【1…...
html+css+js实现Notification 通知
实现效果: 代码实现: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Notif…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
