一、模闆繼承
模闆繼承和類的繼承含義是⼀樣的,主要是為了提⾼代碼重⽤,減輕開發⼈員的⼯作量。
1.父模闆的建立
a、項目工程目錄下,建立templates目錄,作為父模闆,
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檔案
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檔案
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、響應結果:
三.子應用子產品中的模闆繼承
子應用的模闆繼承與上面類似,這樣繼承主要是為了項目目錄以及代碼閱讀的時候更加清晰簡易,建立子產品和編輯子產品内容相似之處較多,就在單獨提取出來一個子應用的模闆給建立和編輯頁面繼承使用,這裡代碼就不全貼出來了,下面的大體的建立思路
1.目錄結構如下
2.父模闆 base.html
base.html
base.html
3.子應用子產品的父模闆 feature_main.html
繼承父模闆 base.html
feature_main.html
base.html
feature_main.html
![
4.子應用子產品子模版, new_feature.html
繼承子應用模闆 feature_main.html
,并引入js
new_feature.html
feature_main.html
new_feature.html