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"),

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/56174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剧场的客户端形式区别,APP,小程序,H5的不同优势以及推广方案

剧场的客户端形式区别与推广策略 在数字化时代&#xff0c;剧场的线上化成为大势所趋。不同的线上平台如APP、小程序和H5各有千秋&#xff0c;如何选择最适合自己的平台&#xff0c;并制定有效的推广方案&#xff0c;成为了剧场管理者需要考虑的重要问题。 APP&#xff1a;深度…

【AIGC】OpenAI API在快速开发中的实践与应用:优化ChatGPT提示词Prompt加速工程

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;使用最新型号确保最佳实践利用最新模型进行高效任务处理为什么要选择最新模型&#xff1f;结论 &#x1f4af;指令与上下文的分隔最佳实践分隔指令和上下文的重要性使用符…

univer实现excel协同

快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><script src&q…

无线费控智能水表:智能生活的守护者

在当今智能化日益普及的时代&#xff0c;无线费控智能水表作为一项重要的技术创新&#xff0c;正在逐步改变我们的生活方式。它不仅能够实现远程抄表&#xff0c;自动计费&#xff0c;还能有效监控用水情况&#xff0c;促进水资源的合理利用&#xff0c;是现代城市智慧化管理不…

如何在 cPanel 中使用 PHP-FPM

PHP性能一直是影响网站托管的一个重要问题。PHP是当前网络上使用最广泛的服务器编程语言&#xff0c;远远领先于其他语言。最受欢迎的内容管理系统和电子商务应用程序&#xff0c;如WordPress、Joomla、Drupal、Magento等&#xff0c;都是用PHP编写的。 PHP-FPM加速了在繁忙服务…

24/10/12 算法笔记 NiN

LeNet、AlexNet和VGG都有一个共同的设计模式&#xff1a;通过一系列的卷积层与汇聚层来提取空间结构特征&#xff1b;然后通过全连接层对特征的表征进行处理。 AlexNet和VGG对LeNet的改进主要在于如何扩大和加深这两个模块。 或者&#xff0c;可以想象在这个过程的早期使用全连…

用java来编写web界面

一、ssm框架整体目录架构 二、编写后端代码 1、编写实体层代码 实体层代码就是你的对象 entity package com.cv.entity;public class Apple {private Integer id;private String name;private Integer quantity;private Integer price;private Integer categoryId;public…

C++:STL:vector类常用函数介绍(附加部分重要函数模拟实现)

cplusplus.com/reference/vector/vector/https://cplusplus.com/reference/vector/vector/ vector在实际中非常的重要&#xff0c;在实际中我们熟悉常见的接口就可以&#xff0c;有了string的基础&#xff0c;vector其实大体使用方法上二者是类似的&#xff1a; 这里我们先给…

ScriptableObject基本使用

使用方法 自定义类继承ScriptableObject 可以在类内部增加数据或者数据类&#xff0c;一般用于配置 注意事项 给继承ScriptableObject的类增加CreateAssetMenu特性。 CreateAssetMenu一般默认三个参数 第一个参数是父目录 第二个参数是父目录的子选项 第三个参数是可以…

多态(二)

1.多态的原理 虚函数表 class Base { public:virtual void Func1(){cout << "Func1()" << endl;} private:int _b 1; };b对象是8bytes&#xff0c;除了_b成员&#xff0c;还多一个__vfptr放在对象的前面(注意有些 平台可能会放到对象的最后面&#xf…

微信小程序启动不起来,报错凡是以~/包名/*.js路径的文件,都找不到,试过网上一切方法,最终居然这么解决的,【避坑】命运的齿轮开始转动

app.json "resolveAlias": {"~/*": "/*"},文件代码也没有问题&#xff0c;网上的方法试过来了&#xff0c;大模型AI也问过遍&#xff0c;熬夜到凌晨2点半&#xff0c;最不可思议的是居然是因为微信开发者工具版本的问题&#xff0c;我真的是笑死…

量化之一:均值回归策略

文章目录 均值回归策略理论基础数学公式 关键指标简单移动平均线&#xff08;SMA&#xff09;标准差Z-Score 交易信号实际应用优缺点分析优点缺点 结论 实践backtrader参数&#xff1a;正常情况&#xff1a;异常情况&#xff1a; 均值回归策略 均值回归&#xff08;Mean Rever…

JAVA-数据结构-排序

1.直接插入排序 1.原理&#xff1a;和玩扑克牌一样&#xff0c;从左边第二个牌开始&#xff0c;选中这个&#xff0c;和前面的所有牌比较&#xff0c;插在合适的位置 public static void insertsort(int[] arr){//直接插入排序for (int i 1; i < arr.length; i) {//此循环…

STM32 GPIO

GPIO&#xff08;通用输入输出口&#xff0c;General Purpose Input Output&#xff09;接口的功能是让嵌入式处理器能够通过软件灵活地读出或控制单个物理引脚上的高、低电平&#xff0c;实现内核和外部系统之间的信息交换。 GPIO是嵌入式处理器使用最多的外设&#xff0c;能够…

甲虫身体图像分割系统源码&数据集分享

甲虫身体图像分割系统源码&#xff06;数据集分享 [yolov8-seg-EfficientRepBiPAN&#xff06;yolov8-seg-C2f-FocusedLinearAttention等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challen…

毕设开源 大数据电影数据分析与可视化系统(源码+论文)

文章目录 0 前言1 项目运行效果2 设计概要3 最后 0 前言 &#x1f525;这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师…

简单粗暴理解GNN、GCN、GAT

GNN 思想&#xff1a;近朱者赤近墨者黑 GNN的流程&#xff1a; 聚合&#xff08;把邻居的信息贴到自己身上来&#xff0c;作为它自己特征的补足&#xff09;更新循环&#xff08;为什么要多次&#xff1f;看以下例子&#xff09; GNN能干嘛&#xff1f; 1.结点分类&#xf…

【多线程】多线程(12):多线程环境下使用哈希表

【多线程环境下使用哈希表&#xff08;重点掌握&#xff09;】 可以使用类&#xff1a;“ConcurrentHashMap” ★ConcurrentHashMap对比HashMap和Hashtable的优化点 1.优化了锁的粒度【最核心】 //Hashtable的加锁&#xff0c;就是直接给put&#xff0c;get等方法加上synch…

【网络协议】TCP协议常用机制——延迟应答、捎带应答、面向字节流、异常处理,保姆级详解,建议收藏

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;计算机网络那些事 前几篇文章&#xff0c;博主带大家梳理了一下TCP协议的几个核心机制&#xff0c;比如保证可靠性的 确认应答、超时重传 机制&#xff0c;和提高传输效率的 滑动窗口及其相关优化机…

Qt实现Halcon窗口显示当前图片坐标

一、前言 Halcon加载图片的窗口&#xff0c;不仅能放大和缩小图片&#xff0c;还可以按住Ctrl键显示鼠标下的灰度值&#xff0c;这种方式很方便我们分析缺陷的灰度和对比度。 二、实现方式 ① 创建显示坐标和灰度的widget窗口 下图的是widget部件&#xff0c;使用了4个label控…