Django-6-Django模板层及静态文件

Django设计模式

相比于Java的springboot MVC模式,Django是基于MTV模式,使用更为简单便捷。
在这里插入图片描述
在这里插入图片描述

  • 视图层是核心,控制着整个业务逻辑

模板层

  • 模板可以根据视图函数传递的字典动态显示html页面
  • 如何配置模板?
    • 创建模板文件夹:<项目名>/templates
    • 在settings.py的TEMPLATES配置:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates', # 模板引擎,默认使用django自带
        'DIRS': [os.path.join(BASE_DIR, 'templates')], # 需要配置的模板目录
        'APP_DIRS': True, # 是否需要在应用的目录中搜索模板
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

这里只需要配置'DIRS': [os.path.join(BASE_DIR, 'templates')],接收一个列表,接存储html文件的目录

如何在视图中加载模板

有两种方法可以加载:

def test_html(request):
    # 方法1:使用loader
    # from django.template import loader
    # t = loader.get_template('test.html')  # 加载html模板页面
    # html = t.render()  # 将页面转换成文本
    # return HttpResponse(html)

    # 方法2:使用render
    from django.shortcuts import render
    return render(request, 'test.html')  # 直接渲染页面,代码更简洁,推荐
  • 实例:
    1.首先在项目名同一级目录(或者manage.py同级目录)中创建templates目录
    在这里插入图片描述
    2.在setting.py中设置TEMPLATES目录'DIRS': [os.path.join(BASE_DIR, 'templates')]'
    3.在templates目录中新建html测试文件test.html
    在这里插入图片描述
    4.urls.py配置路由
urlpatterns = [
    path('admin/', admin.site.urls),
    path('home/', views.test_html), # 配置测试路由
]

5.视图函数写好测试路由的函数

def test_html(request):
    # 方法1:使用loader
    # from django.template import loader
    # t = loader.get_template('test.html')  # 加载html模板页面
    # html = t.render()  # 将页面转换成文本
    # return HttpResponse(html)

    # 方法2:使用render
    from django.shortcuts import render
    return render(request, 'test.html')  # 直接渲染页面,代码更简洁,推荐

浏览器访问http://127.0.0.1:8000/home/即可
在这里插入图片描述
看似与前面的HttpResonse没有太大区别,其实这里是一个巨大的跨越,可以想象的到的是我们可以把任何的html/css/js都放到templates目录中,从而实现各种各样的网页。

如何在模板中使用视图传递参数

如何把视图函数的参数传递到模板中呢?其实非常简单,需要两步:

  • 1.在视图函数中将要传递的数据包装在一个字典中,通过render(request, 'test.html', dic)形式即可
  • 2.在模板中通过{{ 变量 }}的方式调用即可在,这里的变量是上一步字典中的key
    请看示例
    views.py
def test_html(request):
    from django.shortcuts import render
    # 定义一个字典,向模板传递name和language两个变量
    dic = {
        'name': 'Django',
        'language': 'python'
    }
    return render(request, 'test.html', dic)  # 最后一个即字典

test.html

<body>
    <h1>这是测试页面</h1>
    <h2>{{ name }} was written by {{language}}</h2>
</body>

访问可得:
在这里插入图片描述

静态文件

静态文件是支持网页最终显示效果的,例如css,js,图片,音频及视频
在这里插入图片描述
例如上述网页的图片以及右侧的音乐都属于静态文件
想要在网页中添加这些静态文件,必须要遵循Django的配置原则,大致可以分成两步,第一步在settings.py设置静态文件相关路径及url地址,并在静态文件路径中放入相应的图片、音乐视频,以及后续用的更多的css样式、js动态文件

配置 settings.py

想要使用静态文件,需要首先在settings.py中做一些配置

  • 1.配置静态文件访问路径,表示从哪个url找到静态文件,该配置默认存在
    说明:可以通过http://127.0.0.1:8000/static/访问资源
STATIC_URL = '/static/'
  • 2.配置静态文件存储位置路径,资源(图片、音乐及视频等)存放的具体位置
    需要注意STATICFILES_DIRS 是一个元组,所以如果只有一个元素,不要忘记末尾的,
# 一字不差,否则报错
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
  • 静态文件配置:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/
# 配置静态文件访问路径,表示从哪个url找到静态文件,该配置默认存在
# 可以通过http://127.0.0.1:8000/static/访问资源
STATIC_URL = '/static/'

# 配置静态文件存储位置路径,资源(图片、音乐及视频等)存放的具体位置
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'), # 项目名称同级目录创建'static'目录,存储静态文件资源,为更好的分类管理可以,在’static‘目录下再创建'image', 'css', 'js'等子目录
)
  • manage.py同级目录创建static目录(非常重要!!!,否则可能找不到这些静态文件),存储静态文件资源,为更好的分类管理可以,在’static‘目录下再创建’image’, ‘css’, 'js’等子目录,相关资源直接拖进目录即可
    在这里插入图片描述

在模板中使用静态文件

  • 配置完成后,在有三种方法可以在模板中使用静态文件
    • 相对地址:/static/image/300.jpg
    • 绝对地址:http://127.0.0.1:8000/static/image/300.jpg
    • static标签:需要首先载入标签{% load static %},在模板中使用{% static '/image/300.jpg' %},注意从/image写起而不是/static
<img src="/static/image/300.jpg" alt="zxy">相对地址
    <img src="http://127.0.0.1:8000/static/image/300.jpg" alt=""> 绝对地址
    <!-- 通过static标签 -->
    {% load static %}
    <img src="{% static 'image/300.jpg' %}" alt=""> 标签地址

完整示例:
urls.py:

from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('home/', views.home),
]

views.py

from django.shortcuts import render


def home(request):

    return render(request, 'home.html')

home.html


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h2>Home</h2>
    <img src="/static/image/300.jpg" alt="zxy">相对地址
    <img src="http://127.0.0.1:8000/static/image/300.jpg" alt=""> 绝对地址
    <!-- 通过static标签 -->
    {% load static %}
    <img src="{% static '/image/300.jpg' %}" alt=""> 标签地址
</body>

</html>

最后访问home页面效果:
在这里插入图片描述

  • 当然我们可以加入更多静态文件类型,例如音乐
<body>
    {% block body %}
    <img src="/static/image/300.jpg" alt="zxy"><br>
    <!-- 将音乐保存到/static/music下,并使用static标签引用,设置显示控制及自动播放 -->
    <audio src="{% static '/music/free.mp3' %}" controls autoplay></audio>
    {% endblock body %}

</body>
  • 效果
    在这里插入图片描述

参考

达内教育

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: `django-admin startproject mybbs` 是一个 Django 命令,用于创建一个名为 `mybbs` 的 Django 项目。这条命令在终端中输入,并在当前目录下生成一个包含项目模板的新目录 `mybbs`。项目模板包含一系列文件和目录,这些文件和目录提供了 Django 项目的基础结构和功能。你可以在这个新目录中开发你的 Django 应用。 例如,如果你想创建一个名为 `mybbs` 的 Django 项目,你可以在终端中输入: ``` django-admin startproject mybbs ``` 然后,Django 会在当前目录下生成一个名为 `mybbs` 的目录,该目录包含了项目模板文件和目录。 ### 回答2: django-admin startproject mybbs是用于创建一个名为mybbs的Django项目的命令。Django是一个基于Python的高级Web框架,它提供了许多强大的工具和功能来简化Web应用程序的开发过程。 执行这个命令后,Django将会在当前目录下创建一个名为mybbs的文件夹,这个文件夹将作为项目的根目录。在这个根目录下,Django会自动生成一些必要的文件和目录,包括一个名为manage.py的Python脚本文件,以及一个名为mybbs的子目录。 manage.py是项目的命令行工具,通过它可以执行各种Django相关的操作,如运行开发服务器、创建数据库等。mybbs子目录是项目的主要代码目录,其中包含了一些重要的文件和目录,如settings.py、urls.py和wsgi.py等。 settings.py是项目的配置文件,其中包含了项目的一些基本设置,如数据库连接、静态文件路径、模板路径等。通过编辑这个文件,可以对项目的基本配置进行修改。 urls.py是项目的URL路由配置文件,它定义了URL和视图函数之间的映射关系。通过编辑这个文件,可以定义项目的各个URL路径以及对应的视图函数。 wsgi.py是项目的Web服务器接口文件,它定义了如何将Django项目与Web服务器连接起来。这个文件一般不需要手动编辑,系统会自动生成并提供默认的配置。 总之,执行django-admin startproject mybbs命令之后,将会创建一个名为mybbs的Django项目,该项目包含了一些必要的文件和目录,可以通过编辑这些文件来配置项目的各项设置。 ### 回答3: 执行该命令“django-admin startproject mybbs”可以创建一个名为mybbs的Django项目。这个命令会在当前目录下创建一个名为mybbs的项目文件夹,并在文件夹中生成一些必需的文件和目录。 在mybbs文件夹中,会生成一个manage.py文件,这是一个用于管理项目的命令行工具。通过它,我们可以执行各种与项目相关的操作,如启动开发服务器、执行数据库迁移等。 此外,mybbs文件夹中还会生成一个名为“mybbs”的子文件夹,它是项目的主要目录,我们在这个目录下进行开发工作。 在mybbs子文件夹中,会生成一个名为“settings.py”的文件,它是项目的配置文件,我们可以在这个文件中对项目进行各种配置,如数据库设置、静态文件路径等。 同时,在mybbs子文件夹中,还会生成一个名为“urls.py”的文件,它是项目的URL配置文件,我们可以在这个文件中定义URL与视图函数之间的映射关系,用于处理用户请求。 总而言之,通过执行“django-admin startproject mybbs”命令,我们可以快速创建一个Django项目,为后续的开发工作打下基础。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值