《python编程从入门到实践》day38

# 昨日知识点回顾

        定义、迁移模型Entry

# 今日知识点学习

        18.2.7 Django shell        

         每次修改模型后,看到重启后的效果需要重启shell,退出shell会话Windows系统按ctrl+Z或者输入exit()

18.3 创建页面:学习笔记主页

        创建页面三阶段:定义URL,编写视图和编写模版

        18.3.1 映射URL        

# learning_log\urls.py
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('', include('learning_logs.urls'))
]
# learning_logs\urls.py
"""定义learining——logs的URL模式。"""
# 为映射视图,导入path
from django.urls import path
# 从当前文件夹引入view.py
from . import views
# app_name 区分同项目同名文件
app_name = 'learning_logs'# urlpatterns包含learning_logs中请求的页面
urlpatterns = [# 主页path('', views.index, name='index'),# 第一个帮助Django正确路由请求,空字符串与基础URL匹配,第二个实参指定调用函数,第三个指定URL模式名称指定为index
]

        18.3.2 编写视图

# learning\views.py
from django.shortcuts import render# Create your views here.
def index(request):"""学习笔记的主页"""# 传递两个实参:对象request以及一个可用于创建页面的模版return render(request, 'learning_logs/index.html')

        18.3.3 编写模版 

# learning_log\learning_logs\templates\learning_logs\index.html
# <p>段落开始、</p>段落结束
<p>Learning Logs</p><p>Learning Log helps you keep track of your learning, for any topic you're learning about.</p>

         浏览器网址localhost:8000运行显示结果:

         python manage.py runserver的终端窗口按ctrl+c停用服务器

18.4 创建其他页面

        创建两个显示数据的页面:①列出所有主题;②显示特定主题的所有条目 

        在此之前,创建一个父模版,项目其他模版都继承它。

        18.4.1 模版继承

                1.父模版

# learning_log\learning_logs\templates\learning_logs\base.html
# 模版标签{% %}:生成一个与learning——logs/urls.py定义中的'index'URL模式相匹配的URL
# learning_logs是一个命名空间,index是该命名空间中一个名称独特的URL模式
<p><a href = "{% url 'learning_logs:index' %}">Learning Log</a>
</p>
# 插入块标签,块名content,是一个占位符,包含信息由子模块指定
{% block content %}{% endblock content %}

                在简单的HTML页面中,链接是使用锚标签<a>定义的:

<a href = "link_url">link text</a>

                2.子模块        

# 
# 子模块第一行必须包含标签{% extends %},让Django知道继承了哪个父模块
{% extends "learning_logs/base.html" %}# 插入名为content的{% block %}标签,定义content块
{% block content %}
<p>Learning Log helps you keep track of your learning, for any topic you're learning about.</p>
# 标签{% endblock content %}指定内容定义结束位置
{% endblock content %}

         18.4.2 显示所有主题的页面

                1.URL模式

# learning_logs/urls.py
"""定义learining——logs的URL模式。"""
# 为映射视图,导入path
from django.urls import path
# 从当前文件夹引入view.py
from . import views
# app_name 区分同项目同名文件
app_name = 'learning_logs'# urlpatterns包含learning_logs中请求的页面
urlpatterns = [# 主页path('', views.index, name='index'),# 第一个帮助Django正确路由请求,空字符串与基础URL匹配,第二个实参指定调用函数,第三个指定URL模式名称指定为index# 显示所有的主题path('topics/', views.topics, name='topics')
]

                2.视图

# views.py
from django.shortcuts import render# 导入所需数据相关联的模型
from .models import Topic# Create your views here.
def index(request):"""学习笔记的主页"""# 传递两个实参:对象request以及一个可用于创建页面的模版return render(request, 'learning_logs/index.html')def topics(request):"""显示所有的主题"""topics = Topic.objects.order_by('date_added')# 定义一个将要发送模版的上下文context = {'topics': topics}return render(request, 'learning_logs/topics.html', context)

        3.模块

# learning_log\learning_logs\templates\learning_logs\topics.html
# 继承base.html
{% extends "learning_logs/base.html" %}
# 标准HTML中,项目列表称为无序列表,用<ul></ul>表示
{% block content %}<p>Topics</p>
# 所有主题的项目列表始于<ul>处<ul>
# 循环:{% for item in list %}{% endfor %}{% for topic in topics %}
# HTML标签<li></li>之间的内容表示一个项目列表项<li>{{  topic }}</li>
# {% empty %}告诉Django在列表topics为空时该怎么办{% empty %}<li>No topics have been added yet.</li>{% endfor %}</ul>
{% endblock content %}

         浏览器输入网址localhost:8000/topics/显示:

        18.4.3 显示特定主题的页面

                1.URL模式

"""定义learining——logs的URL模式。"""
# 为映射视图,导入path
from django.urls import path
# 从当前文件夹引入view.py
from . import views
# app_name 区分同项目同名文件
app_name = 'learning_logs'# urlpatterns包含learning_logs中请求的页面
urlpatterns = [# 主页path('', views.index, name='index'),# 第一个帮助Django正确路由请求,空字符串与基础URL匹配,第二个实参指定调用函数,第三个指定URL模式名称指定为index# 显示所有的主题path('topics/', views.topics, name='topics'),# 特定主题的详细页面path('topics/<int:topic_id>/', views.topic, name='topic')
]

         2.视图

# views.py
from django.shortcuts import render# 导入所需数据相关联的模型
from .models import Topic# Create your views here.
def index(request):"""学习笔记的主页"""# 传递两个实参:对象request以及一个可用于创建页面的模版return render(request, 'learning_logs/index.html')def topics(request):"""显示所有的主题"""topics = Topic.objects.order_by('date_added')# 定义一个将要发送模版的上下文context = {'topics': topics}return render(request, 'learning_logs/topics.html', context)def topic(request, topic_id):"""显示单个主题"及所有的条目"""topic = Topic.objects.get('id=topic_id')entries = topic.entry_set.order_by('-date_added')context = {'topic': topic, 'entries': entries}return render(request, 'learning_logs/topic.html', context)

        3. 模版

# topic.html
{% extends 'learning_logs/base.html' %}{% block content %}<p>Topic: {{ topic }}</p><p>Entries:</p><ul>{% for entry in entries %}<li>
# Django中竖线(|)表示模版过滤器,即对模版变量的值进行修改的函数<p>{{ entry.date_added|date:'M d, Y H:i' }}</p><p>{{ entry.text|linebreaks  }}</p></li>{% empty %}<li>There are no entries for this topic yet.</li>{% endfor %}</ul>{% endblock content %}

        4.将显示所有主题的页面中的主题设置为链接

# topics.html
{% extends "learning_logs/base.html" %}{% block content %}<p>Topics</p><ul>{% for topic in topics %}<li><a href =" {% url 'learning_logs:topic' topic.id %}">{{ topic  }}</a></li>{% empty %}<li>No topics have been added yet.</li>{% endfor %}</ul>
{% endblock content %}

                 浏览器输入ValueError at /topics/2/显示结果:

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

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

相关文章

介绍一下Hugging Face,这个公司的背景是什么

Hugging Face是一家成立于2016年的人工智能公司&#xff0c;专注于为AI研究人员和开发者提供开源模型库和工具。以下是关于Hugging Face公司的详细背景介绍&#xff1a; 公司历史与创始人&#xff1a; Hugging Face由Clment Delangue、Julien Chaumond和Thomas Wolf三位法国籍…

E0144 “const char *“ 类型的值不能用于初始化 “char *“ 类型的实体

解决方案&#xff1a; 在Visual Studio中&#xff0c;在项目上右键&#xff0c;属性 >> C/C >> 语言 >> 符合模式&#xff0c;改为“否”。

AI大模型探索之路-基础篇5:GLM-4解锁国产大模型的全能智慧与创新应用

目录 前言一、GLM4大模型总体概述二、GLM4和GPT4功能对比三、GLM4和GPT4性能对比1、基础能力&#xff08;英文&#xff09;2、指令跟随能力3、对齐能力4、长文本能力5、多模态-文生图 四、GLM-4 ALL Tools1、文生图2、代码解释器3、网页浏览4、Function Call5、多工具自动调用 …

【学习笔记】关于建模时需要调整的变量

在进行回归分析时&#xff0c;选择调整变量&#xff08;也就是模型中的协变量&#xff09;需要谨慎考虑。调整的变量并不一定必须是混杂因素&#xff0c;但通常情况下&#xff0c;目的是为了控制那些可能扭曲主要自变量和因变量关系的混杂因素。除了混杂因素&#xff0c;还有几…

C语言之指针进阶(3),函数指针

目录 前言&#xff1a; 一、函数指针变量的概念 二、函数指针变量的创建 三、函数指针变量的使用 四、两段特殊代码的理解 五、typedef 六、函数指针数组 总结&#xff1a; 前言&#xff1a; 本文主要讲述C语言指针中的函数指针&#xff0c;包括函数指针变量的概念、创建…

【面试干货】事务的并发问题(脏读、不可重复读、幻读)与解决策略

【面试干货】事务的并发问题&#xff08;脏读、不可重复读、幻读&#xff09;与解决策略 一、脏读&#xff08;Dirty Read&#xff09;二、不可重复读&#xff08;Non-repeatable Read&#xff09;三、幻读&#xff08;Phantom Read&#xff09;四、总结 &#x1f496;The Begi…

Stable Diffusion——U-ViT用于扩散建模的 ViT 主干网

1.概述 扩散模型是最近出现的强大的深度生成模型&#xff0c;可用于生成高质量图像。扩散模型发展迅速&#xff0c;可应用于文本到图像生成、图像到图像生成、视频生成、语音合成和 3D 合成。 除了算法的改进&#xff0c;骨干网的改进在扩散建模中也发挥着重要作用。一个典型…

nginx代理前端html

正常配置&#xff0c;通过www.example.com或192.168.20.12:80访问server {listen 80;server_name example.com www.example.com;root /var/www/html;index index.html index.htm;location / {try_files $uri $uri/ 404;} }解释&#xff1a; listen 80;&#xff1a;监听 HTTP 端…

汽车R155法规中,汽车获取到的VTA证书,E后面的数字表示什么意思?

标签&#xff1a; 汽车R155法规中&#xff0c;汽车获取到的VTA证书&#xff0c;E后面的数字表示什么意思&#xff1f;&#xff1b; 汽车&#xff1b;VTA认证; 有些厂商汽车拿到的VTA证书上面写着E9&#xff0c; 有些厂商汽车拿到的VTA证书上面写着E5&#xff0c;E9与E5有什么差…

嵌入式之音频基础知识

声音特性 1、响度&#xff1a;人主观上感觉声音的大小&#xff08;俗称音量&#xff09;&#xff0c;由“振幅”和人离声源的距离决定&#xff0c;振幅越大响度越大&#xff0c;人和声源的距离越小&#xff0c;响度越大&#xff1b; 2、音调&#xff1a;声音的高低&#xff0…

多商户消费券系统源码(ThinkPHP+FastAdmin+微信公众号)

打造智能促销新体验 一、引言&#xff1a;消费券系统的时代意义 在当今这个数字化高速发展的时代&#xff0c;电子商务和移动支付已经成为人们日常生活的重要组成部分。随着市场竞争的加剧&#xff0c;多商户消费券系统作为一种创新的促销手段&#xff0c;正逐渐受到商家和消…

k8s笔记 | helm包管理

什么是Helm kubenetes包管理器&#xff0c;是查找&#xff0c;分享和使用软件构件 kubernetes的最佳方式&#xff1b; 可以做什么 从头开始创建新的chart将chart打包成归档(tgz)文件与存储chart的仓库进行交互与现有的kubernates集群中安装和卸载chart管理与Helm一起安装的 …

从零训练yolov8

1.收集数据 2.数据标注 pip install labelimg3.划分数据集 0.2的验证机0.8的训练集 import os from shutil import copyfile from sys import exit import randomsource r"D:\Data\imgs\screenc" \\ target_train r"D:\Data\imgs\datasets\mydata\images\t…

aws msk加密方式和问控制连接方式

msk加密方式 msk提供了两种加密方式 静态加密传输中加密 创建集群时可以指定加密方式&#xff0c;参数如下 aws kafka create-cluster --cluster-name "ExampleClusterName" --broker-node-group-info file://brokernodegroupinfo.json --encryption-info file:/…

Android四大组件 Broadcast广播机制

一 概述 广播 (Broadcast) 机制用于进程或线程间通信&#xff0c;广播分为广播发送和广播接收两个过程&#xff0c;其中广播接收者 BroadcastReceiver 是 Android 四大组件之一。BroadcastReceiver 分为两类&#xff1a; 静态广播接收者&#xff1a;通过 AndroidManifest.xm…

flutter 实现旋转星球

先看效果 planet_widget.dart import dart:math; import package:flutter/material.dart; import package:vector_math/vector_math_64.dart show Vector3; import package:flutter/gestures.dart; import package:flutter/physics.dart;class PlanetWidget extends StatefulW…

echarts-树图、关系图、桑基图、日历图

树图 树图主要用来表达关系结构。 树图的端点也收symbol的调节 树图的特有属性&#xff1a; 树图的方向&#xff1a; layout、orient子节点收起展开&#xff1a;initialTreeDepth、expandAndCollapse叶子节点设置&#xff1a; leaves操作设置&#xff1a;roam线条&#xff1a…

告别 Dart 中的 Future.wait([])

作为 Dart 开发人员&#xff0c;我们对异步编程和 Futures 的强大功能并不陌生。过去&#xff0c;当我们需要同时等待多个 future 时&#xff0c;我们依赖 Future.wait([]) 方法&#xff0c;该方法返回一个 List<T>。然而&#xff0c;这种方法有一个显着的缺点&#xff1…

2、xss-labs之level2

1、打开页面 2、传入xss代码 payload&#xff1a;<script>alert(xss)</script>&#xff0c;发现返回<script>alert(xss)</script> 3、分析原因 打开f12&#xff0c;没什么发现 看后端源码&#xff0c;在这form表单通过get获取keyword的值赋给$str&am…

跑大模型的经验

LLama2: 1. 使用torchrun来跑&#xff1a; torchrun --nproc_per_node 1 example_text_completion.py \--ckpt_dir llama-2-7b/ \--tokenizer_path tokenizer.model \--max_seq_len 128 --max_batch_size 4 关于集群分布式torchrun命令踩坑记录&#xff08;自用&#xff09;…