Django 模板

Django 模板:

在前面的几节中我们都是简单的django.http.HttpResponse 来把内容显示到网页上,

本节将讲解如何使用渲染模板的方法来显示内容。

本节代码是基于Django 1.8,但Django 1.4 - Django 1.11 操作流程也一样的。

>>> import django
>>> print django.__version__
1.11


1.创建一个zqxt_tmpl 项目,和一个 名称为 learn 的应用,并且

node2:/app#django-admin.py startproject zqxt_tmpl
node2:/app#cd zqxt_tmpl/
node2:/app/zqxt_tmpl#python manage.py startapp learn
node2:/app/zqxt_tmpl#

2.把learn 加入到settings.INSTALLED_APPS中

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
 
    'learn',
)


3.打开laern/views.py 写一个首页的视图

from django.shortcuts import render
 
 
def home(request):
    return render(request, 'home.html')




4.在learn 目录下新建一个templates文件夹,


里面新建一个home.html


默认配置下,Django 的模板系统会自动找到app下面的templates文件夹中的模板文件。


5.在home.html 中写一些内容:

<!DOCTYPE html>
<html>
<head>
    <title>欢迎光临</title>
</head>
<body>
欢迎光临自强学堂
</body>
</html>

6.注意:Django 1.10.x 中为

1
url(r'^admin/', admin.site.urls),


node2:/app/zqxt_tmpl/learn#cat views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render

# Create your views here.
from django.shortcuts import render
 
 
def home(request):
    return render(request, 'home.html')



8.运行开发服务器,看看效果



模板补充知识:

网站模板的设计,一般的,我们做网站由一些通用的部分,比如导航,底部,访问统计代码等待。


可以写一个base.html 来包含这些通用文件(include):

node2:/app/zqxt_tmpl/learn/templates#cat base.html 
<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}默认标题{% endblock %} - 自强学堂</title>
</head>
<body>
 
{% include 'nav.html' %}
 
{% block content %}
<div>这里是默认内容,所有继承自这个模板的,如果不覆盖就显示这里的默认内容。</div>
{% endblock %}
 
{% include 'bottom.html' %}
 
{% include 'tongji.html' %}
 
</body>
</html>


如果需要,写足够多的block以便继承的模板可以重写该部分,include是包含其它文件的内容,

就是把一些网页公用的部分拿出来,重复利用



注意: 模板一般放在app下的templates中,Django会自动去找这个文件夹中找。

但假如我们每个app的templates中都有一个index.html,当我们在views.py中使用的时候,

直接写一个render(request,'index.html'),django能不能找到当前app的templates文件夹中的

index.html文件夹呢?(答案是不一定能,有可能找错)


Django 模板查找机制:Django查找模板的过程是在每个app的templates文件夹中找

(而不是只在当前app中的代码只在当前的app的templates文件夹中找)

原文地址:https://www.cnblogs.com/hzcya1995/p/13349380.html