Python+Django(4)——创建其他网页(模板继承)
模板继承:
1,修改主页
父模板:抽取通用元素,在index.html同级目录下新建base.html
<p>
<a href="{% url 'learning_logs:index' %}">Learning Log</a>
</p>
{% block content %}{% endblock content %}
板标签用大括号和百分号 {% %} 表示,在这个实例中,模板标签{% url 'learning_logs:index' %} 生成一个URL,该URL与learning_logs/urls.py中定义的名为index 的URL模式匹配。在这个示例中,learning_logs 是一个命名空间,而index 是该命名空间中一个名称独特的URL模式。
{% extends "learning_logs/base.html" %}
{% block content %}
<p>
Learning Log helps you keep track of your learning, for any topic you're
learning about.
</p>
{% endblock content %}
解决办法:urls.py中将大括号修改为中括号(字典是无序的,所以报错不能逆转)
2,增加一个主题列表页面
- 打开urls.py
urlpatterns = [
url(r'^$',views.index,name="index"),
# 显示所有的主题
url(r'^topics/$', views.topics, name='topics'),
]
- 在views.py新增topics函数
from django.shortcuts import render
from .models import Topic # Create your views here.
def index(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)
- 在index.html同级目录下新建topic.html
{% extends "learning_logs/base.html" %}
{% block content %}
<p>Topics</p>
<ul>
{% for topic in topics %}
<li>{{topic}}</li>
{% empty %}
<li>no topics have been added yet.</li>
{% endfor %}
</ul>
{% endblock content %}
- 修改base.html
<p>
<a href="{% url 'learning_logs:index' %}">Learning Log</a>
<a href="{% url 'learning_logs:topics' %}">Topics</a>
</p>
{% block content %}{% endblock content %}
- 打开http://localhost:8000/

点击Topic:

3,显示特定主题
- urls.py
"""定义learning_logs的URL模式"""
from django.urls import re_path as url
# 让Python从当前的urls.py模块所在的文件夹中导入视图
from . import views urlpatterns = [
url(r'^$', views.index, name="index"),
# 显示所有的主题
url(r'^topics/$', views.topics, name='topics'),
# 特定主题的详细页面
url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic'),
]
- views.py
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)
- 新建topic.html
{% extends 'learning_logs/base.html' %}
{% block content %}
<p>Topic: {{ topic }}</p>
<p>Entries:</p>
<ul>
{% for entry in entries %}
<li>
<p>{{ entry.date_added|date:'Y M d, H:i' }}</p>
<p>{{ entry.text|linebreaks }}</p>
</li>
{% empty %}
<li>There are no entries for this topic yet.</li>
{% endfor %}
</ul>
{% endblock content %}
- 打开topics.html,将每个主题加上链接
<li>
<a href="{% url 'learning_logs:topic' topic.id %}">{{topic}}</a>
</li>
- 打开http://localhost:8000/,点击Topic,点击某个主题:

Python+Django(4)——创建其他网页(模板继承)的更多相关文章
- Django加载静态网页模板
Django加载静态网页模板 步骤: 第一步:在子系统blog根目录下新建模版目录templates,里面新建一个login.html <!DOCTYPE html> <html l ...
- Python+Django+SAE系列教程10-----Django模板
在本章中,我们开始模板,在前面的章节,您可能已经注意到,我们回到文本的方式有点特别的示例视图. 那.HTML直接在硬编码 Python 其中代码. 这的确是一个小BT. def current_dat ...
- Django(4)html模板继承、模板导入、分页实现
1.获取所有请求信息 导入模块:from django.core.handlers.wsgi import WSGIRequest request.environ:包含所有的请求信息,可以打印看一下, ...
- day 48 ORM 进阶 多表连接 创建 以及 html模板继承
多表的一对多创建 多表的多对多创建 多表的一对多修改 多表的多对多修改 前情提要: 最近认识了不少大佬,大佬开着保时捷. .一顿狂奔..我连车尾灯都看不到.. 本次内容 ORM 的多表链接 查 ...
- [Python] Django框架入门4——深入模板
说明: 本文主要深入了解模板(templates),主要涉及模板编写步骤.定义模板.模板继承.HTML转义.CSRF等. 一.模板 动态生成HTML.表达外观.实现业务逻辑(view)与显示内容(te ...
- django 之创建自己的模板(使用案例)
Django 创建自己的模板篇(实例) 此处需要创建模板,主要是对自己的模板进行扩展: 一般是扩展模板的tag和filter两个功能.可以用来创建你自己的tag和filter功能库. 创建模板库 分为 ...
- django css文件导入,模板继承
今天写了一下模板继承 刚开始感觉还行,也挺简单的 当只有html的时候还是能继承到的,代码如下.首先在父html文件里加入 {% block content %} {% block extracss ...
- Django 中url补充以及模板继承
Django中的URL补充 默认值 在url写路由关系的时候可以传递默认参数,如下: url(r'^index/', views.index,{"name":"root& ...
- Python Django ORM创建基本类以及生成数据结构
#在项目目录下的modules.py中创建一个类,来自动生成一张表UserInfo class UserInfo(models.Model): username = models.CharField( ...
- python django项目创建及前期准备(使用pycharm)
一.创建django项目 1.打开pycharm软件 2.点击菜单栏 File-->New Project,弹出如下对话框,如下图设置 二.基本配置 1.静态文件目录配置(用于客户端访问后台服务 ...
随机推荐
- grep 排除目录 grep -rn CONFIG_VE --exclude-dir={arch,drivers,net} --exclude=cscope*
grep -rn CONFIG_VE --exclude-dir={arch,drivers,net} --exclude=cscope*
- 2022 icpc 沈阳站 记录(非题解)
赛前 大概是赛前三周才突然知道拥有了比赛机会. 赛前训练和vp频率很高,有一段时间cf上都是绿的.比赛的那一周只有一天没在vp,到了周六热身赛我人都有点麻木.(可能正赛也是类似的状态吧) 比赛的过程b ...
- 异步串口通信协议--UART
UART(通用异步收发传输器)将由计算机内部传送过来的并行数据转换为输出的串行数据流.将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用. 在输出的串行数据流中加入奇偶校验位,并对 ...
- onedrive 不显示图标
步骤一 https://www.xitongbuluo.com/jiaocheng/67248.html 步骤二 https://blog.csdn.net/weixin_44041700/artic ...
- jquery 操作表格 jQuery操作表格(table)的常用方法、技巧汇总
以下列出13个jQuery操作table常用到的功能: 1.鼠标移动行变色 $('#table1 tr').hover(function(){ $(this).children('td').addCl ...
- Spring事务注意事项 以及 遇到的坑
原创参考: https://www.cnblogs.com/yougewe/p/7466677.html (Spring,为内部方法新起一个事务,此处应有坑.) https://blog.csdn ...
- unity默认管线lightmap
lightmap采样 https://blog.csdn.net/wodownload2/article/details/94431040
- 记录坑:Chrome谷歌浏览器最小化和页面遮挡后JS代码不稳定
问题:用定时器 setInterval()做个滚动通知的动画,浏览器最小化时,定时器 setInterval()失效了,导致滚动条重叠了 可能原因: js代码不稳定 Chrome谷歌浏览器最小化和页面 ...
- 安装SSMS出现许可证被颁发者直接吊销
出现这种情况,使用以下链接下载rootsupd.exe程序:http://media.kaspersky.com/utilities/CorporateUtilities/rootsupd.zip 运 ...
- xlwings.copy两种用法和匹配超链接
第一种复制整个sheet页,不能覆盖同名sheet,需先删除.name新sheet也名称 after复制后的位置wb.sheets('增量机会-体外刷新导入').copy(name='快照版本(勿动) ...