第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开发中的一个重要组成部分。

相关推荐
张小生1809 分钟前
PyCharm中 argparse 库 的使用方法
python·pycharm
秃头佛爷9 分钟前
Python使用PDF相关组件案例详解
python
Dxy123931021610 分钟前
python下载pdf
数据库·python·pdf
叶知安12 分钟前
如何用pycharm连接sagemath?
ide·python·pycharm
weixin_4327022615 分钟前
代码随想录算法训练营第五十五天|图论理论基础
数据结构·python·算法·深度优先·图论
菜鸟清风22 分钟前
ChromeDriver下载地址
python
deephub34 分钟前
Tokenformer:基于参数标记化的高效可扩展Transformer架构
人工智能·python·深度学习·架构·transformer
Open-AI1 小时前
Python如何判断一个数是几位数
python
桀桀桀桀桀桀1 小时前
数据库中的用户管理和权限管理
数据库·mysql
极客代码1 小时前
【Python TensorFlow】入门到精通
开发语言·人工智能·python·深度学习·tensorflow