当前位置: 首页 > 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;并转换视频格式&…...

AI量化交易框架解析:从架构设计到实战部署

1. 项目概述&#xff1a;一个AI驱动的加密资产对冲基金框架最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“ai-hedge-fund-crypto”。光看名字&#xff0c;就能感受到一股浓浓的“量化AI加密”的混合气息。这其实是一个开源框架&#xff0c;旨在帮助开发者或量化研究员&…...

3个按键冲突场景,Hitboxer如何帮你重获游戏控制权?

3个按键冲突场景&#xff0c;Hitboxer如何帮你重获游戏控制权&#xff1f; 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否曾在激烈的游戏对战中&#xff0c;因为同时按下W和S键而突然卡住&#xff1f;或…...

qmcdump终极指南:三步解锁QQ音乐加密音频文件

qmcdump终极指南&#xff1a;三步解锁QQ音乐加密音频文件 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 还在为QQ音乐下…...

终极qmcdump指南:5分钟掌握QQ音乐加密格式解密技巧

终极qmcdump指南&#xff1a;5分钟掌握QQ音乐加密格式解密技巧 【免费下载链接】qmcdump 一个简单的QQ音乐解码&#xff08;qmcflac/qmc0/qmc3 转 flac/mp3&#xff09;&#xff0c;仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump qmcdump是…...

开源办公套件自动化部署与集成实战:基于OpenOffice的服务化解决方案

1. 项目概述&#xff1a;为什么我们需要一个“开源”的办公套件&#xff1f;如果你在GitHub上搜索过办公软件相关的仓库&#xff0c;大概率会看到过longyangxi/OpenOffice这个项目。乍一看&#xff0c;你可能会以为这是一个Apache OpenOffice的镜像或者某个分支。但点进去仔细研…...

从零构建情感大语言模型:基于EmoLLM的实践指南

1. 项目概述&#xff1a;当大语言模型学会“察言观色”最近在折腾一个挺有意思的开源项目&#xff0c;叫SmartFlowAI/EmoLLM。光看名字你可能就猜到了&#xff0c;这玩意儿跟“情绪”和“大语言模型”有关。没错&#xff0c;它的核心目标就是让冷冰冰的LLM&#xff08;Large La…...

模拟电路布局优化:多智能体强化学习实践

1. 模拟电路布局优化的挑战与机遇在集成电路设计领域&#xff0c;模拟电路布局一直是个令人头疼的问题。作为一名从业十余年的模拟电路设计师&#xff0c;我深刻体会到传统布局方法在面对现代工艺挑战时的局限性。每次手工调整晶体管位置时&#xff0c;那种"差之毫厘&…...

VS Code光标主题定制指南:提升开发效率与视觉舒适度

1. 项目概述&#xff1a;一个为开发者量身定制的光标主题集合如果你和我一样&#xff0c;每天有超过8个小时的时间是在代码编辑器里度过的&#xff0c;那么你一定对那个在屏幕上闪烁的光标再熟悉不过了。它不仅仅是文本插入点&#xff0c;更是我们思维在数字世界中的延伸。然而…...

OpenClaw实战教程:声明式配置驱动的高效数据抓取方案

1. 项目概述&#xff1a;一个关于“OpenClaw”的实战教程 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“OpenClawTuto”。光看名字&#xff0c;你可能会有点摸不着头脑&#xff0c;这“OpenClaw”到底是个啥&#xff1f;是某种开源机械爪&#xff1f;还是一个代号&…...

智能游戏助手:League Akari如何彻底改变你的英雄联盟体验

智能游戏助手&#xff1a;League Akari如何彻底改变你的英雄联盟体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾在英雄选择阶段手…...