当前位置: 首页 > news >正文

Django学习笔记之Django基础学习

Django笔记

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • Django笔记
  • 创建django项目
  • 二、urls.py
  • 二、templates
  • 三、templates中几个基础操作
  • 四、templates中extend和include


创建django项目

提示:这里可以添加本文要记录的大概内容:

首先创建一个项目。
在这里插入图片描述
其次注意点为:这里是虚拟环境所以,一定要检测setting 中django包有无导入
在这里插入图片描述
启动环境在该文件夹下输入

python manage.py runserver

setting.py 是相关配置文件
urls.py 是路径文件

在pycharm创建具体的app,
在这里插入图片描述

python manage.py startapp book

二、urls.py

该py为设置浏览器路径文件
注意要补充from django.shortcuts import HttpResponse

  1. 简单操作,但是开发不会这么做
from django.shortcuts import HttpResponse
def index(request):return HttpResponse("hello")urlpatterns = [path('admin/', admin.site.urls),path('index/',index)
]

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的

运行后在网页尾缀后面输入/index
在这里插入图片描述
2. 正常操作
在views.py中输入内容,在urls.py中导入该views.py所在的包调用里面运行函数。
例如在book文件中的views.py中通过查询字符串(query string):https://www.baidu.com/wd=python&a=&b=2
注意要加入from django.shortcuts import render,HttpResponse

from django.shortcuts import render,HttpResponse
# 在URL中携带参数
#1. 通过查询字符串(query string):https://www.baidu.com/wd=python&a=&b=2
#2.在path中携带:http://127.0.0.1:8000/book/2
# Create your views here.
# 1 http://127.0.0.1:8000/book?id=1
def book_detail_query_string(request):# request.GET={"id":3}book_id=request.GET.get('id')name_id=request.GET.get('name')return HttpResponse(f"查询的图书id是:{book_id},图书名称是:{name_id}")

在这里插入图片描述

在urls.py 中导入所在views.py的包如from book import views,然后写入路径和所需参数的返回函数

from book import views
urlpatterns = [path('admin/', admin.site.urls),path('index/',index),path('book/',views.book_detail_query_string)
]

在这里插入图片描述
最终形成的样式为:
在这里插入图片描述
#2 # http://127.0.0.1:8000/book/2/水浒传
在这里插入图片描述

urlpatterns = [path('admin/', admin.site.urls),# http://127.0.0.1:8000/indexpath('index/',index),# http://127.0.0.1:8000/book?id=1&name=''path('book/',views.book_detail_query_string),# http://127.0.0.1:8000/book/1#在book_id前指定参数类型有两点好处:#1、以后在浏览器中,如果bobk_id输入的是一个非整形、那么会出现404错误:/book/abc#2、在视图函数中,得到的book_id就是一个整形,否则就是str类型path('book/<int:book_id>/<str:name_id>/',views.book_detail_path),
]

在这里插入图片描述

3.分模块化
新建一个app movie
在movie中的view加入所需函数

from django.shortcuts import render,HttpResponse# Create your views here.
def movie_list(request):return HttpResponse("电影列表")def movie_detail(request,movie_id):return HttpResponse(f"查询的电影id是:{movie_id}")

在这里插入图片描述
随后在movie中的urls内加入路径

from django.urls import path
from . import views
#指定应用名称
app_name="movie"
urlpatterns = [path('list/',views.movie_list,name="movie_list"),path('detail/<int:movie_id>',views.movie_detail,name="movie_detail"),
]

最后在总的urls.py 中加入分段地址

from django.urls import path,include
urlpatterns = [# 分段地址path('movie/',include("movie.urls"))
]

在这里插入图片描述
整体运行结果为
在这里插入图片描述

二、templates

其实主要就三步

1.在所在app下的view.py中创建html路径

# Create your views here.
def index(request):return render(request,"index.html")

在这里插入图片描述

2.在所在app下创建templates文件夹,修改整体的setting.py,加入一个所在app名字,最后再在改templates文件夹中创建html
在这里插入图片描述
在这里插入图片描述

3.在该app名下的urls.py中创建连接views.py的路径,导入view所在的函数和需要的地址。最后再在整体urls.py中做个读取入口
在这里插入图片描述
在这里插入图片描述

三、templates中几个基础操作

1.app下的模板
view界面

# Create your views here.
def baidu(request):return render(request,"baidu.html")

html界面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>这是home下面的html</title>
</head>
<body><h1 style="background-color: pink">这是home下面的html</h1>
</body>
</html>

2.参数传递模板
view界面

def info(request):username="AAAA"book={"name":"水浒传","author":"施耐庵"}books=[{"name":"水浒传1", "author": "施耐庵1"},{"name": "水浒传2", "author": "施耐庵2"},{"name": "水浒传3", "author": "施耐庵3"}]class Person:def __init__(self, realname):self.realname=realnamecontext={'username': username,'book': book,'books':books,'person':Person("BBB"),}return render(request,"info.html",context=context)

html界面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>信息传递</title>
</head>
<body>
<p>{{ username }}</p>
<p>图书名称{{ book.name }}</p>
<p>第一本书图书名称: {{ books.0.name }}</p>
<p>姓名为:{{ person.realname }}</p>
{% for book in books %}<p>{{ book.name }}</p>
{% endfor %}</body>
</html>

3.if参数模板
view界面

def if_view(request):age=20context = {'age':age,}return render(request,"if.html",context=context)

html界面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>if标签</title>
</head>
<body>
{% if age > 18 %}<p>已经满18</p>
{% elif age < 18%}<p>不满18</p>
{% else %}<p>刚满18</p>
{% endif %}
</body>
</html>

4.for参数模板
view界面


def for_view(request):books = [{"name": "水浒传1", "author": "施耐庵1"},{"name": "水浒传2", "author": "施耐庵2"},{"name": "水浒传3", "author": "施耐庵3"}]Person = {"name": "施耐庵","age": 18,"height":180}context = {'books':books,'Person':Person,}return render(request,"for.html",context=context)

html界面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>for标签</title>
</head>
<body>
<table>
<thead><tr><td>序号</td><td>名称</td><td>作者</td></tr>
</thead><tbody>{% for book in books reversed%}<tr><td>{{ forloop.counter }}</td><td>{{ book.name }}</td><td>{{ book.author }}</td></tr>{% empty %}<tr>没有任何东西</tr>{% endfor %}</tbody>
</table><div>{% for key,value in Person.items %}<p>{{ key }}:{{ value }}</p>
{% endfor %}
</div></body>
</html>

4.with参数模板
view界面


def with_view(request):books = [{"name": "水浒传1", "author": "施耐庵1"},{"name": "水浒传2", "author": "施耐庵2"},{"name": "水浒传3", "author": "施耐庵3"}]context = {"books":books}return render(request,"with.html",context=context)

html界面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>with标签</title>
</head>
<body>
{% with book1=books.1 %}<P>{{ book1.name }}:{{ book1.author }}</P>
{% endwith %}
</body>
</html>

5.url参数模板
view界面


def url_view(request):return render(request,"url.html")def book_detail(request,book_id):return HttpResponse(f"查询的图书id是:{book_id}")

html界面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>url标签</title>
</head>
<body>
<a href="{% url 'home:home_baidu'%}">百度</a>
<a href="{% url 'home:url_book_detail' book_id=1 %}">图书详情</a>
</body>
</html>

总体的url

from django.urls import path
from . import views
#指定应用名称
app_name="home"
urlpatterns = [path("",views.index,name="home_index"),path('baidu/',views.baidu,name="home_baidu"),path('info/',views.info,name="home_info"),path('if/',views.if_view,name="home_if"),path('for/',views.for_view,name="home_for"),path('with/',views.with_view,name="home_with"),path('url/',views.url_view,name="url_with"),path('book/<book_id>',views.book_detail,name="url_book_detail"),
]

四、templates中extend和include

子模板继承父模板用extend
父模板包含子模板用include

首先创建公用的父模版
其中{block}{endblock}为插槽
rmwz_base作为付模板

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>{% block title %}{% endblock %}---hzc</title>{% block head %}{% endblock %}
</head>
<body>
<header><ul><li><a href="/"> 首页 </a></li><li><a href="/course"> 创业课堂 </a></li></ul>
</header>
{% block body %}我是来自副模板的
{% endblock %}
<footer>版权信息XXXX
</footer>
</body>
</html>

rmwz_index作为子模板

{% extends 'rmwz_base.html' %}
{% block title %}首页
{% endblock %}
{% block head %}<style>body{background-color: pink;}</style>
{% endblock %}
{% block body %}{{ block.super }}{% include "hotarticle.html" %}<div>自己加入东西</div>
{% endblock %}

hotarticle.html作为rmwz_index的子模板

<div>
<h2>热门文章</h2><ul>{% for article in articles%}<li>{{ article }}</li>{% endfor %}</ul>
</div>

其中view.py定义articles变量

def template_form(request):articles = ['小米su7','ChatGPT 5 发布' ]context = {"articles":articles}return render(request, "rmwz_index.html",context=context)

urls.py 载入地址链接

  path('template/form/',views.template_form,name="template_form"),

实现效果
在这里插入图片描述


相关文章:

Django学习笔记之Django基础学习

Django笔记 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录…...

smartctl 设置硬盘的 write-caching

sg3 一、sg3查看缓存状态 您可以使用sg_modes命令来查看SAS盘和SATA盘的缓存状态。例如&#xff0c;要查看/dev/sdb设备的缓存状态&#xff0c;您可以执行以下命令&#xff1a; sg_modes -p 8,0 /dev/sdb 二、sg3关闭机械盘写缓存状态&#xff08;仅适用于SAS盘&#xff09…...

【Spring AI】Java实现类似langchain的向量数据库RAG_原理与具体实践

介绍一下RAG&#xff1a; 检索增强生成&#xff08;RAG&#xff09;是一种技术&#xff0c;它结合了检索模型和生成模型来提高文本生成的质量。通过从企业私有或专有的数据源中检索相关信息&#xff0c;并将这些信息与大型语言模型相结合&#xff0c;RAG能够显著减少模型产生幻…...

linux下使用systemctl设置开机自动运行程序

本文介绍在Linux下&#xff0c;使用systemctl设置开机自动运行程序&#xff0c;实现创建一个systemd服务单元文件&#xff0c;并启用该服务的方法。 1、创建.service文件 在/etc/systemd/system/目录下创建一个以.service结尾的文件&#xff0c;例如myapp.service&#xff1a…...

复位电路的亚稳态

复位导致亚稳态的概念&#xff1a; 同步电路中&#xff0c;输入数据需要与时钟满足setup time和hold time才能进行数据的正常传输&#xff08;数据在这个时间段内必须保持不变&#xff1a;1不能变为0&#xff0c;0也不能变为1&#xff09;&#xff0c;防止亚稳态&#xff1b; …...

针对考研的C语言学习(循环队列-链表版本以及2019循环队列大题)

题目 【注】此版本严格按照数字版循环队列的写法&#xff0c;rear所代表的永远是空数据 图解 1.初始化部分和插入部分 2出队 3.分部代码解析 初始化 void init_cir_link_que(CirLinkQue& q) {q.rear q.front (LinkList)malloc(sizeof(LNode));q.front->next NULL…...

系统架构设计师教程 第12章 12.4 信息系统架构案例分析 笔记

12.4 信息系统架构案例分析 ★★★★☆ 12.4.1 价值驱动的体系结构——连接产品策略与体系结构 1.价值模型概述 价值模型核心的特征可以简化为三种基本形式。 (1)价值期望值&#xff1a;表示对某一特定功能的需求&#xff0c;包括功能、质量和不同 级别质量的实用性。 (2)…...

web1.0,web2.0,web3.0 有什么区别 详解

Web 的发展经历了多个阶段&#xff0c;每个阶段都有其独特的特点和技术进步。下面是 Web 1.0、Web 2.0 和 Web 3.0 之间的主要区别和详细解释&#xff1a; Web 1.0 时间范围&#xff1a;大约在 1991 年至 1995 年。 Web 1.0 是互联网的最初形态&#xff0c;也被称为静态 Web…...

将图片添加到 PDF 的 5 种方法

需要一种称为 PDF 编辑器的特定工具才能将图片添加到 PDF。尽管大多数浏览器在查看和注释 PDF 文件方面都非常出色&#xff0c;但如果您使用图像到 PDF 技术&#xff0c;则只能将照片放入 PDF 中。无需修改即可将 PDF 文件恢复为原始格式的能力是使用此类软件程序甚至在线服务的…...

TiDB 优化器丨执行计划和 SQL 算子解读最佳实践

导读 在数据库系统中&#xff0c;查询优化器是数据库管理系统的核心组成部分&#xff0c;负责将用户的 SQL 查询转化为高效的执行计划&#xff0c;因而会直接影响用户体感的性能与稳定性。优化器的设计与实现过程充满挑战&#xff0c;有人比喻称这是数据库技术要持续攀登的珠穆…...

初学51单片机之I2C总线与E2PROM以及UART简单实例应用

这是I2C的系列的第三篇&#xff0c;这篇主要是写一个简单的程序来实践一下相关的内容。前面博主写过一个电子密码锁的程序初学51单片机之简易电子密码锁及PWM应用扩展_51单片机设计电子密码锁-CSDN博客 本篇主要是在此基础上修改下程序&#xff0c;让密码存储在E2PROM中&#…...

软考高级软件架构师论文——论Web系统的测试技术及其应用

【摘要】 本人于2023年8月参与了某地级市的市级机关电子政务信息系统的建设工作,该项目是该市机关的电子政务网建设计划的一部分,笔者在该项目中担任项目经理和系统分析师一职,主要负责项目的日常全面管理和质量保证与质量控制工作。该项目是基于WEB系统的,由于WEB系统具有…...

快速总结AFPN

AFPN: Asymptotic Feature Pyramid Network for Object Detection 解决的问题 特征金字塔架构的提出是为了解决尺度变化的问题&#xff0c;图像中物体真正有用的特征在顶部最高层需要通过多个中间尺度传播&#xff0c;并与这些尺度的特征交互&#xff0c;才能与底部的低层特征…...

Linux 内核中USB鼠标枚举失败问题总结

一、环境&#xff1a; 机器平台&#xff1a;linux 内核版本&#xff1a;linux-3.4 二、问题&#xff1a; USB鼠标接入后报错&#xff0c;log显示设备无法枚举 usb 1-1: new low-speed USB device number 10 using musb-hdrc hub 1-0:1.0: unable to enumerate USB device o…...

十六进制转二进制

128 64 32 16 8 4 2 1 十六进制&#xff1a;0~9ABCDEF&#xff08;A是10、B是11、C是12、D是13、E是14、F是15&#xff09; 每一个十六进制位转换成4个二进制位&#xff0c;左边不足4个补0 示例&#xff1a; 109CBE&#xff1a;0001 0000 1001 1100 1011 1110 8 4 2 1 1 …...

Python保存CSV文件,Excel打开后中文乱码

情况描述 在做多语言文件处理时&#xff0c; 使用 pandas&#xff0c; 并且指定了encoding为 UTF-8&#xff0c; 在 IDE&#xff0c; Sublime等编辑器上查看都显示正常&#xff0c;使用Excel打开非英文字符&#xff0c; 例如汉字&#xff0c; 阿拉伯文&#xff0c; 希伯来文等显…...

数据湖数据仓库数据集市数据清理以及DataOps

一提到大数据我们就知道是海量数据&#xff0c;但是我们并不了解需要从哪些维度去考虑这些数据的存储。比如 数据湖、数据仓库、数据集市&#xff0c;以及数据自动化应用DataOps有哪些实现方式和实际应用&#xff0c;这篇文章将浅显的做一次介绍。 数据湖 数据湖是一种以自然…...

「Ubuntu」文件权限说明(drwxr-xr-x)

我们在使用Ubuntu 查看文件信息时&#xff0c;常常使用 ll 命令查看&#xff0c;但是输出的详细信息有些复杂&#xff0c;特别是 类似与 drwxr-xr-x 的字符串&#xff0c;在此进行详细解释下 属主&#xff1a;所属用户 属组&#xff1a;文件所属组别 drwxr-xr-x 7 apps root 4…...

JS-学生管理系统(功能实现)

基础知识点掌握&#xff1a; 1.DOM节点 首先DOM树当做一颗到着生长的树&#xff0c;DOM树里面的每一个内容称为节点 节点类型&#xff1a; 属性节点元素节点文本节点其他 2.查找节点&#xff1a; 查找节点分为3个类型&#xff1a; 父节点子节点兄弟节点 &#xff08;1&…...

C# 屏幕录制工具

屏幕录制工具 开发语音&#xff1a;C# vb.net 下载地址&#xff1a;https://download.csdn.net/download/polloo2012/89879996 功能&#xff1a;屏幕录制&#xff0c;声卡采集&#xff0c;麦克风采集。 屏幕录制&#xff1a;录制屏幕所有操作&#xff0c;并转换视频格式&…...

不止于画图:用@antv/g6-editor的Command系统打造可撤销/重做的智能流程设计器

超越基础绘图&#xff1a;利用antv/g6-editor构建企业级智能流程设计器 在当今快速发展的数字化时代&#xff0c;流程设计工具已成为企业数字化转型的核心组件。从简单的审批流程到复杂的业务编排&#xff0c;一个功能完备的流程设计器不仅能提升工作效率&#xff0c;更能确保…...

云手机 流畅稳定 操作简单

云手机依托云端服务器集群&#xff0c;配备企业级 GPU和高性能 CPU&#xff0c;通过资源池化技术&#xff0c;将物理算力切割成多个独立安卓实例&#xff0c;每个云手机实例可独占或动态共享强大资源&#xff0c;算力远超本地旗舰手机&#xff0c;能轻松运行大型 3D 游戏等高性…...

终极指南:如何在浏览器中创建惊艳的WebGL流体模拟效果

终极指南&#xff1a;如何在浏览器中创建惊艳的WebGL流体模拟效果 【免费下载链接】WebGL-Fluid-Simulation Play with fluids in your browser (works even on mobile) 项目地址: https://gitcode.com/gh_mirrors/web/WebGL-Fluid-Simulation 想要在浏览器中体验令人惊…...

AIGlasses_for_navigation 开发环境快速配置:Anaconda虚拟环境指南

AIGlasses_for_navigation 开发环境快速配置&#xff1a;Anaconda虚拟环境指南 你是不是也遇到过这种情况&#xff1a;好不容易在本地跑通了一个项目&#xff0c;换台电脑或者更新了几个库&#xff0c;结果就报了一堆莫名其妙的错误。或者&#xff0c;你想同时维护两个需要不同…...

CSS 嵌套语法最佳实践:从入门到精通的完整指南

CSS 嵌套语法最佳实践&#xff1a;从入门到精通的完整指南 CSS 是流动的韵律&#xff0c;JS 是叙事的节奏。而 CSS 嵌套&#xff0c;是让这份韵律更加优雅、结构更加清晰的魔法。 一、CSS 嵌套&#xff1a;现代样式表的革命 CSS 嵌套&#xff08;Nesting&#xff09;是 CSS 原…...

(论文速读)HyperFusion-DEIM:遥感影像中多路径关注与尺度感知融合的精确物体检测

论文题目&#xff1a;遥感影像中多路径关注与尺度感知融合的精确物体检测&#xff08;Multi path attention and scale aware fusion for accurate object detection in remote sensing imagery&#xff09;期刊&#xff1a;Scientific Reports摘要&#xff1a;在遥感图像中追求…...

本地部署开源推送通知系统 ntfy 并实现外部访问

ntfy 是一款简单、轻量级且功能强大的开源推送通知系统&#xff0c;它的核心目标是让用户或开发者能够轻松地从任何设备、任何地方向自己的手机或桌面发送通知。本文将详细介绍如何在 Linux 系统局域网内部署 ntfy 并结合路由侠实现外网访问局域网内部署的 ntfy 。 第一步&…...

Java实现Redis延迟队列:从原理到高可用架构

在现代分布式系统中&#xff0c;延迟队列是一种至关重要的组件。它允许我们将消息或任务放入队列&#xff0c;直到指定的延迟时间到达后才被消费。这种机制广泛应用于订单超时自动取消、支付后定时发送通知、任务重试等场景。 虽然RabbitMQ和RocketMQ等专业消息中间件都支持延迟…...

一文搞懂 Spring Cloud:从入门到实战的微服务全景指南(建议收藏)

如果你正在做后端开发&#xff0c;或者正在准备找实习/秋招&#xff0c;那你一定绕不开一个关键词&#xff1a;微服务。 而在 Java 技术栈中&#xff0c;微服务的“标配方案”&#xff0c;就是今天的主角——Spring Cloud。 很多同学第一次接触 Spring Cloud 时&#xff0c;都…...

收藏备用!小红书二面大模型面试题:Agent 基本架构核心组件详解(小白也能看懂)

很多程序员和大模型小白反馈&#xff0c;最近小红书二面被问到了一道高频题&#xff1a;「Agent 的基本架构由哪些核心组件构成&#xff1f;」&#xff0c;这道题看似基础&#xff0c;却能快速考察对 Agent 核心逻辑的理解&#xff0c;不管是面试还是日常学习都必须掌握。今天就…...