Python Django 详解(基础)
文章目录
- 1 概述
- 1.1 安装 django
- 1.2 创建 django 项目
- 1.3 创建 app
- 2 启动 Django
- 2.1 settings.py:注册 app
- 2.2 view.py:URL和视图对应
- 2.3 启动 Django
- 2.4 访问
- 3 快速上手
- 3.1 templates:html 模板
- 3.2 static:静态文件
- 3.3 模板语法
- 3.4 请求和响应
- 3.5 表单
1 概述
1.1 安装 django
> pip install django
1.2 创建 django 项目
[File]-[New Project...]-[Django]- 设置 Location 和 解释器 -[create]
固定,不用动的文件:
asgi.py:接收网络请求(异步)
wsgi.py:接收网络请求(同步)
重要,需要经常操作的文件:
urls.py:URL和函数的对应关系
settings.py:项目配置

1.3 创建 app
- 命令窗口执行命令:
python manage.py startapp app01(其中 app01 为自定义项目名)
固定,不用动的文件:
admin.py:后台管理
apps.py:app启动类
migrations:数据库变更记录
test.py:单元测试
重要,经常操作的文件:
models.py:对数据库操作
views.py:函数(对应上述 1.2 Django 项目中的 urls.py 文件)

2 启动 Django
2.1 settings.py:注册 app

2.2 view.py:URL和视图对应

2.3 启动 Django

> # 指定IP地址和端口
> python manage.py runserver 127.0.0.1:8080
2.4 访问

3 快速上手
3.1 templates:html 模板


3.2 static:静态文件


3.3 模板语法

views.py:
from django.shortcuts import render, HttpResponse# Create your views here.
# 入参 request 是必选项
def index(request):return HttpResponse("Hello World!")def user_list(request):# 对应 settings.py 中的 'DIRS': [os.path.join(BASE_DIR, 'templates')]# 若 settings.py 中设为 'DIRS': [] 则表示 app 目录下的 templatesname = "张三"roles = ["超级管理员", "管理员", "用户"]user_info = {"name": "张三", "salary": 10000, "role": "超级管理员"}data_list = [{"name": "张三", "salary": 10000, "role": "超级管理员"},{"name": "李四", "salary": 30000, "role": "管理员"},{"name": "王五", "salary": 20000, "role": "用户"}]# k1-k4:自定义的 key,name、roles.. 为上述定义的值return render(request, "user_list.html", {"k1": name, "k2": roles, "k3": user_info, "k4": data_list})
user_list.html:
{% load static %} <!-- 导入 static 文件 --><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1> 模板语法 </h1>
<div>{{ k1 }}</div>
<hr/>
<!-- k2: 原样显示,k2.:显示某项 -->
<!-- 数组 -->
<div>{{ k2 }}</div>
<div>{{ k2.0 }}</div>
<div>{{ k2.1 }}</div>
<div>{{ k2.2 }}</div>
<div>{% for item in k2 %}<span>{{ item }}</span>{% endfor %}
</div>
<hr/>
<!-- 字典 -->
{{ k3 }}
{{ k3.name }}
{{ k3.salary }}
{{ k3.role }}
<ul>{% for key, value in k3.items %}<li>{{ key }} = {{ value }}</li>{% endfor %}
</ul>
<hr/>
<!-- 复合结构 -->
{{ k4 }}
{{ k4.0 }}
{{ k4.0.name }}
{% for item in k4 %}<div>{{ item.name }} : {{ item.salary }}</div>
{% endfor %}
<hr/>
<!-- 条件判断 -->
{% if k1 == "张三" %}<h1> 我是张三 </h1>
{% elif k1 == "李四" %}<h1> 我是李四 </h1>
{% else %}<h1> 我是.. </h1>
{% endif %}
</body>
</html>
浏览器效果:

3.4 请求和响应
view.py:
from django.shortcuts import render, HttpResponse, redirect# Create your views here.
def request_response(request):# request 是一个对象,封装了用户发送过来的所有请求相关数据# 1.【请求】获取请求的方式 GET/POSTprint(request.method)# 2.【请求】GET:在 URL 上传递值,速度快,但用户可见# 若浏览器输入:http://127.0.0.1:8000/request_response?n=1&m=2# 则此处输出值:<QueryDict: {'n': ['1'], 'm': ['2']}>print(request.GET)# 3.【请求】POST:在 请求体 中传递值,用户不可见print(request.POST)# 4.【响应】将字符串的内容返回给请求者# return HttpResponse("返回内容")# 5.【响应】读取HTML的内容 + 渲染(替换)#return render(request, "request_response.html", {"title": "我来了"})# 6.【响应】重定向return redirect("https:www.baidu.com")
templates 目录下新建 request_response.html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h1> 某些请求 {{ title }}</h1>
</body>
</html>
urls.py:
from django.urls import pathfrom app01 import viewsurlpatterns = [# path('admin/', admin.site.urls),path('index/', views.index),path('user/list', views.user_list),# 请求和响应path('request_response', views.request_response)
]
3.5 表单
views.py:
from django.shortcuts import render, HttpResponse, redirect# Create your views here.
def login(request):if request.method == "GET":return render(request, "login.html")# 如果是 POST 请求,则获取用户提交的数据userName = request.POST.get("user")passWord = request.POST.get("pwd")if userName == 'admin' and passWord == "123":return HttpResponse("登录成功!")else:return render(request, "login.html", {"error_msg": "用户名或密码错误"})
templates 目录下新建 login.html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>用户登录</h1>
<form action="/login/" method="post">{% csrf_token %}<input type="text" name="user" placeholder="用户名"><input type="password" name="pwd" placeholder="密码"><input type="submit" value="提交"> {{ error_msg}}
</form>
</body>
</html>

urls.py:
"""
from django.contrib import admin
from django.urls import pathfrom app01 import viewsurlpatterns = [# path('admin/', admin.site.urls),# 用户登录path('login/', views.login)
]
相关文章:
Python Django 详解(基础)
文章目录 1 概述1.1 安装 django1.2 创建 django 项目1.3 创建 app 2 启动 Django2.1 settings.py:注册 app2.2 view.py:URL和视图对应2.3 启动 Django2.4 访问 3 快速上手3.1 templates:html 模板3.2 static:静态文件3.3 模板语法…...
C语言内存函数
目录 memcpy(Copy block of memory)使用和模拟实现memcpy的模拟实现 memmove(Move block of memory)使用和模拟实现memmove的模拟实现: memset(Fill block of memory)函数的使用扩展 memcmp(Compare two blocks of memory)函数的使用 感谢各位大佬对我的支持,如果我的文章对你有…...
【Docker】Docker-compose及Consul多容器编排工具
使用一个Dockerfile模版文件可以定义一个单独的应用容器,当需要定义多个容器时就需要编排 docker swarm(管理跨节点) 编排工具——docker compose Dockerfile可以让用户管理一个单独的应用容器;而Compose则允许用户在一个模板&…...
Unity网络同步方案帧同步和状态同步
网络同步方案 介绍开始我们使用的状态同步(实时状态同步)后来采用的帧同步 状态同步优点缺点 帧同步顺序执行追帧重连优点缺点 总结 这两年做的都是帧同步和状态同步的项目,正好最近有时间总结一下什么是帧同步和状态同步,之前在做…...
【Monorepo实战】pnpm+turbo+vitepress构建公共组件库文档系统
Monorepo架构可以把多个独立的系统放到一起联调,本文记录基于pnpm > workspace功能,如何构建将vitepress和组件库进行联调,并且使用turbo进行任务顺序编排。 技术栈清单: pnpm 、vitepress 、turbo 一、需求分析 1、最终目标…...
CentOS 编译安装Redis
一、编译配置hiredis.h C来操作redis数据库。通过hiredis接口来实现,目前只能在Linux环境使用。 下载hiredis.h hiredis的下载地址为:https://github.com/redis/hiredis 解压并编译hiredis [rootlocalhost source_code]# pwd /usr/local/source_…...
可拓展的低代码全栈框架
尽管现在越来越多的人开始对低代码开发感兴趣,但已有低代码方案的局限性仍然让大家有所保留。其中最常见的担忧莫过于低代码缺乏灵活性以及容易被厂商锁定。 显然这样的担忧是合理的,因为大家都不希望在实现特定功能的时候才发现低代码平台无法支持&…...
C++11 智能指针
目录 智能指针 异常导致执行流乱跳 智能指针解决问题 auto_ptr unique_ptr sharded_ptr weak_ptr 智能指针 由于C11引入异常之后,执行流乱跳,所以导致之前 malloc/new 的空间很容易没有被释放,导致内存泄露问题。 所以这时候&#x…...
二、WebGPU阶段间变量(inter-stage variables)
二、WebGPU阶段间变量(inter-stage variables) 在上一篇文章中,我们介绍了一些关于WebGPU的基础知识。在本文中,我们将介绍阶段变量(inter-stage variables)的基础知识。 阶段变量在顶点着色器和片段着色…...
【Linux】31个普通信号
文章目录 1.每种信号的含义2.两种不能被忽略的信号3.两种不能被捕捉的信号 1.每种信号的含义 信号编号信号名信号含义1SIGHUP如果终端接口检测到一个连接断开,则会将此信号发送给与该终端相关的控制进程,该信号的默认处理动作是终止进程。2SIGINT当用户…...
Mac电脑交互式原型设计 Axure RP 8汉化最新 for mac
Axure RP 8是一款专业且快速的原型设计工具,主要用于定义需求、规格、设计功能和界面。这款工具主要适用于用户体验设计师、交互设计师、业务分析师、信息架构师、可用性专家和产品经理等职业。 Axure RP 8的主要特性包括能够快速设计出应用软件或Web网站的线框图、…...
在线免费无时长限制录屏工具 - 录猎在线版
需要录屏的小伙伴注意啦,想要长时间录制又不想花钱的,可以看下这款在线版录屏软件 —— 录猎在线版,一个录屏软件所需要的基本功能它都有,设置录制范围、录制的声音来源、摄像头也能录制的。同时它是支持Windows和Mac系统的&#…...
c语言文件操作详解:fgetc,fputc,fgets,fputs,fscanf,,fprintf,fread,fwrite的使用和区别
前言:在对于c语言的学习中,我们为了持续使用一些数据,为了让我们的数据可以在程序退出后仍然保存并且可以使用,我们引入了文件的概念和操作,本文旨在为大家分享在文件操作中常用的输入输出函数的使用方式和技巧&#x…...
Harmony装饰器
1、装饰器 装饰器是用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如: Component表示自定义组件Entry表示该自定义组件为入口组件State表示组件中的状态变量,状态变量变化会触发UI刷新。 2 、语法范式 Builder/BuilderParam&#…...
如何加快Chrome谷歌浏览器下载速度?
用Chrome打开chrome://flags/...
使用kubectl连接远程Kubernetes(k8s)集群
使用kubectl连接远程Kubernetes集群 环境准备下载kubectl下载地址 安装kubectl并处理配置文件Windows的安装配置安装kubectl拉取配置文件安装kubectl拉取配置文件kubectl命令自动补全 Linux的安装配置安装kubectl拉取配置文件kubectl命令自动补全 环境准备 你需要准备一个Kube…...
Kubernetes革命:云原生时代的应用编排和自动化
文章目录 什么是Kubernetes以及为何它备受欢迎?云原生应用和K8s的关系Kubernetes的核心概念:Pods、Services、ReplicaSets等部署、扩展和管理应用程序的自动化容器编排的演进:Docker到Kubernetes实际用例:企业如何受益于K8s的应用…...
mysql.mongoDb,neo4j数据库对比
#Mysql与MongoDb和Neo4j的一些对比 主要区别 MySQL: 1.MySQL是一种关系型数据库管理系统(RDBMS),广泛用于处理结构化数据。 2.它支持SQL语言,具备成熟的事务处理和数据一致性能力。 3.MySQL适用于大多数传统的基于表…...
unity使用UniStorm 5.1.0.unitypackage增加天气
添加天天气组件unistorm 然后添加一个player 导入包会报错,需要修改代码 using UnityEngine; using UnityEngine.PostProcessing;namespace UnityEditor.PostProcessing {[CustomPropertyDrawer(typeof(UnityEngine.PostProcessing.MinAttribute))]sealed class MinDrawer : …...
Flink实现kafka到kafka、kafka到doris的精准一次消费
1 流程图 2 Flink来源表建模 --来源-城市topic CREATE TABLE NJ_QL_JC_SSJC_SOURCE ( record string ) WITH (connector kafka,topic QL_JC_SSJC,properties.bootstrap.servers 172.*.*.*:9092,properties.group.id QL_JC_SSJC_NJ_QL_JC_SSJC_SOURCE,scan.startup.mode …...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
