第5天:视图与模板进阶

第5天:视图与模板进阶

目标

掌握视图逻辑和模板渲染,包括不同类型的视图、自定义模板标签和过滤器,以及模板继承和包含的概念。

任务概览
  1. 学习函数视图和类视图的使用。
  2. 编写自定义模板标签和过滤器。
  3. 理解模板的继承和包含机制。
详细步骤
1. 函数视图和类视图
  • 函数视图:最简单的视图类型,使用Python函数定义。
  • 类视图 :使用面向对象的方式,继承自django.views.generic中的类。

函数视图示例

python 复制代码
# myproject/myapp/views.py

from django.http import HttpResponse

def home(request):
    return HttpResponse("Welcome to the home page.")

类视图示例

python 复制代码
from django.views import View
from django.http import HttpResponse

class HomeView(View):
    def get(self, request, *args, **kwargs):
        return HttpResponse("Welcome to the home page with class-based view.")
2. 自定义模板标签和过滤器
  • 模板标签:扩展模板的能力,可以包含复杂的逻辑。
  • 过滤器:用于模板中,用于修改变量的值。

自定义过滤器示例

python 复制代码
# myproject/myapp/templatetags/myapp_filters.py

from django import template

register = template.Library()

@register.filter
def add_class(value, arg):
    return value + ' ' + arg

在模板中使用:

html 复制代码
<div class="{{ some_value|add_class:'new-class' }}"></div>
3. 模板继承

模板继承允许你创建一个基础模板,定义通用的结构和样式,然后在子模板中扩展它。

基础模板示例base.html):

html 复制代码
<!-- myproject/myproject/templates/base.html -->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}My Site{% endblock %}</title>
</head>
<body>
    <header>
        <h1>Welcome to My Site</h1>
    </header>
    <main>
        {% block content %}{% endblock %}
    </main>
    <footer>
        &copy; 2024 My Site
    </footer>
</body>
</html>

子模板示例

html 复制代码
<!-- myproject/myproject/templates/home.html -->

{% extends 'base.html' %}

{% block title %}Home Page{% endblock %}

{% block content %}
    <p>This is the home page.</p>
{% endblock %}
4. 模板包含

模板包含允许你创建可以被多个模板重用的代码块。

包含文件示例header.html):

html 复制代码
<!-- myproject/myproject/templates/header.html -->

<header>
    <h1>Header Content</h1>
</header>

在其他模板中使用:

html 复制代码
{% include 'header.html' %}
学习要点
  • 理解函数视图和类视图的区别和使用场景。
  • 学会编写自定义模板标签和过滤器以扩展模板功能。
  • 掌握模板继承的概念,能够创建和使用基础模板和子模板。
  • 理解模板包含的使用,能够重用代码块。
每日回顾
  • 回顾今天学习的不同类型的视图,并尝试编写自己的示例。
  • 练习编写自定义模板标签和过滤器,并在模板中使用它们。
  • 尝试使用模板继承和包含来改进你的模板结构。

通过今天的学习,你应该对Django的视图和模板系统有了更深入的理解,包括如何使用函数视图和类视图,以及如何通过自定义模板标签、过滤器、继承和包含来增强模板的功能。明天,我们将学习如何处理表单,这是Web开发中的一个重要组成部分。

相关推荐
菜鸟小九6 分钟前
mysql运维(日志)
运维·数据库·mysql
李剑一7 分钟前
Python学习笔记3
python
luod21 分钟前
Python包
python
Mr Lee_29 分钟前
Smali 文件生成dex装箱算法整合
开发语言·python·算法
电饭叔29 分钟前
《python语言程序设计》2018版--第8章14题利用字符串输入作为一个信用卡号之一(Luhn算法解释)
android·java·python
SelectDB35 分钟前
Apache Doris 实时更新全解:从设计原理到最佳实践|Deep Dive
数据库·apache
纪莫41 分钟前
技术面:如何解决缓存和数据库一致性的问题?
数据库·redis·java面试⑧股
小女孩真可爱44 分钟前
大模型学习记录(八)---------RAG评估
linux·人工智能·python
刘晓倩1 小时前
Python3的Sequence
开发语言·python
ZhengEnCi1 小时前
一次多线程同步问题的排查:从 thread_count 到 thread.join() 的踩坑之旅
python·网络协议·tcp/ip