天天看點

【django】模闆繼承詳解

一、模闆繼承

模闆繼承和類的繼承含義是⼀樣的,主要是為了提⾼代碼重⽤,減輕開發⼈員的⼯作量。

1.父模闆的建立

a、項目工程目錄下,建立templates目錄,作為父模闆,

【django】模闆繼承詳解

b、在配置settings.py檔案中配置模闆,

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        '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',
            ],
        },
    },
]      
os.path.join(BASE_DIR,‘templates’)      

c、在父模闆下建立子應用pages/books檔案

【django】模闆繼承詳解

d. 父模闆代碼:​

​base.html​

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %} {% endblock %}</title>

    {% block css %}

    {% endblock %}


</head>
<body>
    {% block content %}

    {% endblock %}

    {% block js %}

    {% endblock %}

</body>
</html>      

2.子模版的建立

a、在templates下建立login.html檔案

【django】模闆繼承詳解

b.子模版繼承父模闆,代碼:​

​books.html​

​​

标簽extends:繼承,寫在⼦模闆⽂件的第⼀⾏。

{% extends 'film/index2.html' %}      
{% extends 'base.html' %}

{% block title %}
    登入首頁
{% endblock %}

{% block css %}
    <style>
        p{
            color:red
        }
    </style>
{% endblock %}

{% block content %}
    <P>姓名:<input type="text"></P>
    <P>密碼:<input type="text"></P>
{% endblock %}

{% block js %}
    <script>alert('歡迎登入')</script>
{% endblock %}      

3、視圖類路由

路由 ​

​path(r'books/', views.BooksView.as_view())​

class BooksView(View):
    def get(self, request):
        """路由直接通路(GET): http://127.0.0.1:8087/books/books/"""
        return render(request, 'pages/books.html')      

4、響應結果:

【django】模闆繼承詳解

三.子應用子產品中的模闆繼承

子應用的模闆繼承與上面類似,這樣繼承主要是為了項目目錄以及代碼閱讀的時候更加清晰簡易,建立子產品和編輯子產品内容相似之處較多,就在單獨提取出來一個子應用的模闆給建立和編輯頁面繼承使用,這裡代碼就不全貼出來了,下面的大體的建立思路

1.目錄結構如下

【django】模闆繼承詳解

2.父模闆​

​base.html​

​base.html​

【django】模闆繼承詳解

3.子應用子產品的父模闆​

​feature_main.html​

​​繼承父模闆​

​base.html​

​feature_main.html​

【django】模闆繼承詳解

![

4.子應用子產品子模版,​

​new_feature.html​

​​繼承子應用模闆​

​feature_main.html​

​,并引入js

​new_feature.html​