当前位置:   article > 正文

Django模板的继承与使用

Django模板的继承与使用

1. 创建 Django 项目和应用

首先,在命令行中执行以下命令创建 Django 项目和应用:

  1. django-admin startproject my_project
  2. cd my_project
  3. python manage.py startapp my_app

2. 创建模板文件

在 my_app 应用的目录下,创建 templates/my_app 目录,并在该目录下创建以下模板文件。

base.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>{% block title %}My Django App{% endblock %}</title>
  6. </head>
  7. <body>
  8. <header>
  9. <h1>Welcome to My Django App</h1>
  10. </header>
  11. <main>
  12. {% block content %}
  13. {% endblock %}
  14. </main>
  15. <footer>
  16. <p>&copy; 2024 My Django App. All rights reserved.</p>
  17. </footer>
  18. </body>
  19. </html>
home.html
  1. {% extends "my_app/base.html" %}
  2. {% block title %}Home Page - My Django App{% endblock %}
  3. {% block content %}
  4. <h2>Home Page</h2>
  5. <p>Welcome to the home page of our Django application.</p>
  6. {% endblock %}

一个是基础页面,一个是主页面。

主页面就是写核心内容(需要变的内容)

基础页面就是不变的内容(可以继承下来的)

所以模板的继承,意思就是将你需要的东西,继承到基础模板里面去,改的只是核心内容。

3. 编写 Django 视图

在 my_app 应用的 views.py 文件中编写视图函数渲染 home.html 模板:

  1. from django.shortcuts import render
  2. def home(request):
  3. return render(request, 'my_app/home.html')

4. 配置 URL

在 my_app 应用的 urls.py 文件中配置 URL 映射:

  1. from django.urls import path
  2. from . import views
  3. urlpatterns = [
  4. path('', views.home, name='home'),
  5. ]

替换后的直观效果如下

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Home Page - My Django App</title>
  6. </head>
  7. <body>
  8. <header>
  9. <h1>Welcome to My Django App</h1>
  10. </header>
  11. <main>
  12. <h2>Home Page</h2>
  13. <p>Welcome to the home page of our Django application.</p>
  14. </main>
  15. <footer>
  16. <p>&copy; 2024 My Django App. All rights reserved.</p>
  17. </footer>
  18. </body>
  19. </html>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/725100
推荐阅读
相关标签
  

闽ICP备14008679号