四、Django自定义模板和静态文件位置

2020-12-31  本文已影响0人  途中的蜗牛

在大一点的系统中,并不建议把模板和静态文件分散到各个应用中,而是建议都放在指定的某个位置。

1、自定义模板位置

将模板位置都放在根目录下的templates文件夹中
(1)创建templates文件夹
(2)修改./mysite/settings.py如下,主要是TEMPLATES 中的DIRS和APP_DIRS变量

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'),],   # BASE_DIR本项目的根目录,模板的位置放在本目录下的templates文件夹中
        'APP_DIRS': False,  # 不在允许Django按照默认的方式寻找模板文件。
        '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',
            ],
        },
    },
]

2、自定义静态文件位置

静态文件包含CSS、JavaScript、图片等,建议将所有的静态文件都存在指定的目录。编辑./mysite/settings.py,增加如下的代码:

STATICFILES_DIRS = ( 
    os.path.join(BASE_DIR, "static"),
)

这样就可以通过http://127.0.0.1:8000/static/1.jpg来访问到图片文件了

3、通用的静态文件和基础模板

3.1、通用的静态文件

将静态文件包含CSS、JavaScript、图片比如jquery和bootstrap等相关文件分别放在static文件夹中。

3.2、通用的基础模板

,网页的界面一般分为上中下三部分,可以将上面的头部和下面的底部做成基础模板,在./templates文件夹中创建header.html和footer.html。
(1)header.html代码如下:

{% load staticfiles %}   <!-- 声明引入静态文件的标签,这样以下才可以用{% static%}来引入某个静态文件-->
<div class="container">
    <nav class="navbar navbar-default" role="navigation"> 
        <div class="navbar-header">
        </div>
        <div>
            <ul class="nav navbar-nav" role="navigation">
                <li><a href="{% url 'blog:blog_title' %}">BLOG</a></li>  <!-- 使用的是urls.py中的name或者namespace来表示地址 -->
            </ul>
            <ul class="nav navbar-nav navbar-right" style="margin-right:10px"> 
                <li><a href="#">LOGIN</a></li>                              
            </ul> 
        </div>
    </nav>
</div>

其中:

<div class="container"> <hr>
    <p class="text-center">good good study, day day up</p> 
</div>

(3)重写base.html

{% load staticfiles %}
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>{% block title %}{% endblock %}</title>
    <link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
</head>
    <body>
        {% include "header.html" %}
        <div class="container">
            {% block content %}
            {% endblock %}
        </div>
        {% include "footer.html" %}
        {% block javascript %}
        {% endblock %}
    </body>
</html>

原来的blog应用不需要做任何的修改,再次刷新页面,就会呈现不一样的页面效果。

4、重置管理后台模板

由于在第一步已经修改了模板的位置,因此如果打开http://127.0.0.1:8000/admin/则会出现错误,需要将Django中的默认模板admin和registration两个目录都复制到这项目的./templates里面。

上一篇下一篇

猜你喜欢

热点阅读