《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, include

urlpatterns = [
    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/显示结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Postgresql源码(133)优化器动态规划生成连接路径的实例分析

物理算子的生成分为两步&#xff0c;基表的扫描路径生成set_base_rel_pathlists&#xff1b;连接路径生成&#xff08;make_rel_from_joinlist动态规划&#xff09;。本篇简单分析实现。看过代码会发现&#xff0c;“基表的扫描路径生成”其实就是作为连接路径生成dp计算的第一…

【Redis】 关于 Redis 哈希类型

文章目录 &#x1f343;前言&#x1f38b;命令介绍&#x1f6a9;hset&#x1f6a9;hget&#x1f6a9;hexists&#x1f6a9;hdel&#x1f6a9;hkeys&#x1f6a9;hvals&#x1f6a9;hgetall&#x1f6a9;hmget&#x1f6a9;hlen&#x1f6a9;hsetnx&#x1f6a9;hincrby&#x1…

快速分析变量间关系(Boruta+SHAP+RCS)的 APP(streamlit)

快速分析变量间关系&#xff08;BorutaSHAPRCS&#xff09;的 APP&#xff08;streamlit&#xff09; 以下情况下&#xff0c;你需要这个快速分析的APP: 正式分析之前的预分析&#xff0c;有助于确定分析的方向和重点变量&#xff1b;收集变量过程中&#xff0c;监测收集的变量…

如果突然失业,靠这个项目也能养活自己,6天收入3K

在前两天&#xff0c;我与两位好友相约外出就餐。当时正值雨天&#xff0c;我们便选择了一家大排档&#xff0c;边品尝美食边畅谈人生。聊得尽兴&#xff0c;直到凌晨一点多才回到家中。其中一位朋友最近刚刚遭遇裁员&#xff0c;为了寻找新的工作机会&#xff0c;他已经经历了…

简要的谈谈MySQL存储引擎

MySQL存储引擎 一、先从总体架构说起二、引擎介绍1.存储引擎2.如何更改数据库表引擎3.常用引擎及其特性对比4.如何选择不同类型的引擎 一、先从总体架构说起 1.MySQL架构就是一个客户端-服务器系统。架构可以分为Server层 和 Engine层两部分 连接器&#xff1a;连接器负责跟客…

【AI大模型】这可能是最简单的本地大模型工具,无须部署,一键使用

目录 前言 LM-Studio​编辑 那么问题来了&#xff0c;为什么我要在本地部署大模型&#xff1f; 隐私性&#xff1a; 定制性&#xff1a; 成本和体验的优化&#xff1a; 工具功能特点和使用方式介绍&#xff1a; 首页提供搜索功能和一些模型的推荐 模型下载管理&#x…

深入理解内联函数(C语言)

目录 1.什么是内联函数2.内联函数与宏3.编译器对内联函数的处理4.参考文献 1.什么是内联函数 很多人都会知道&#xff0c;可以将比较小的函数写成内联函数的形式&#xff0c;这样会节省函数调用的开销&#xff0c;具体是什么样的开销呢&#xff1f; 一个函数在执行过程中&…

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

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

Android 实现竖排文本(垂直方向显示)

Android 实现竖排文本-垂直方向显示 前言效果图代码实现方式一 Custom View1. 自定义视图 VerticalTextView2. 在xml布局文件中使用3. 设置文本内容 方式二 使用 TextView 的 rotation属性方式三 使用带有跨距文本的TextView1. 自定义视图 VerticalTextView2. 在xml布局文件中使…

Dubbo源码及总结

Springboot整合Dubbo启动解析Bean定义 根据springboot启动原理&#xff0c;会先把启动类下的所有类先进行解析bean定义&#xff0c;所以要先EnableDubbo这个注解&#xff0c;再根据这个注解里面的注解&#xff0c;可以知道import的两个类DubboComponentScanRegistrar和DubboCo…

【408精华知识】主存相关解题套路大揭秘!

讲完了Cache&#xff0c;再来讲讲主存是怎么考察的&#xff0c;我始终认为&#xff0c;一图胜千言&#xff0c;所以对于很多部件&#xff0c;我都是通过画图进行形象的记忆&#xff0c;那么接下来我们对主存也画个图&#xff0c;然后再来详细解读其考察套路~ 文章目录 零、主存…

结构体;结构成员访问操作符

结构体&#xff1a; 虽然c语言已经提供了内置类型&#xff0c;比如&#xff1a;char、short、int、long等&#xff0c;但还是不够用&#xff0c;就好比我描述一个人&#xff0c;我需要描述他的身高&#xff0c;体重&#xff0c;年龄&#xff0c;名字等信息&#xff0c…

类与对象:接口

一.概念 接口&#xff08;英文&#xff1a;Interface&#xff09;&#xff0c;在JAVA编程语言中是一个抽象类型&#xff0c;是抽象方法的集合&#xff0c;接口通常以interface来声明。 二.语法规则 与定义类相似&#xff0c;使用interface关键词。 Idea可以在开始时直接创建…

《计算机网络微课堂》1-6 计算机体系结构

常见的计算机网络体系结构 从本节课开始&#xff0c;我们要用 4 次课的时间来介绍有关计算机网络体系结构的知识&#xff0c;具体包含以下内容&#xff1a; 一&#xff0c;常见的计算机网络体系结构二&#xff0c;计算机网络体系结构分层的必要性三&#xff0c;计算机网络体系…

使用OpenCV dnn c++加载YOLOv8生成的onnx文件进行目标检测

在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集&#xff0c;使用 LabelMe 工具进行标注&#xff0c;然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件&#xff0c;并自动生成YOLOv8支持的目录结构&#xff0c;包括melon.yaml文件&#xff0c;其内容…

力扣刷题---2418. 按身高排序【简单】

题目描述 给你一个字符串 数组 names &#xff0c;和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i&#xff0c;names[i] 和 heights[i] 表示第 i 个人的名字和身高。 请按身高 降序 顺序返回对应的名字数组 names 。 示例 1&…

力扣刷题---961. 在长度 2N 的数组中找出重复 N 次的元素【简单】

题目描述&#x1f357; 给你一个整数数组 nums &#xff0c;该数组具有以下属性&#xff1a; nums.length 2 * n. nums 包含 n 1 个 不同的 元素 nums 中恰有一个元素重复 n 次 找出并返回重复了 n 次的那个元素。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,3] 输…

微服务中使用Maven BOM来管理你的版本依赖

摘要: 原创出处 sf.gg/a/1190000021198564 「飘渺Jam」欢迎转载&#xff0c;保留摘要&#xff0c;谢谢&#xff01; 为什么要使用BOM? 如何定义BOM? 项目使用方法? BOM&#xff08;Bill of Materials&#xff09;是由Maven提供的功能,它通过定义一整套相互兼容的jar包版…

93.网络游戏逆向分析与漏洞攻防-游戏技能系统分析-增强技能信息显示后进行分析

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

STM32中断编程入门

文章目录 一、 理论部分1.中断系统2.中断执行流程3.NVIC的基本结构4.EXTI介绍5.AFIO复用IO口 二、实验目的&#xff1a;学习stm32中断原理和开发编程方法。使用标准完成以下任务&#xff1a;&#xff08;一&#xff09;实验一 开关控制LED的亮灭1.代码部分2.运行结果 &#xff…