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 …...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
