zoukankan      html  css  js  c++  java
  • 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文件夹中找)

  • 相关阅读:
    怎么在sublime里面显示编码格式
    鸟哥的Linux私房菜——第十七章:Linux 账号与身份管理
    反复
    鸟哥的Linux私房菜——第十六章:学习Shell Scripts
    鸟哥的Linux私房菜——第十五章:正规表示法
    鸟哥的Linux私房菜——第十四章:Bash Shell
    鸟哥的Linux私房菜——第十三章:Vim编译器
    Expression Blend实例中文教程(10)
    Expression Blend实例中文教程(9)
    Expression Blend实例中文教程(8)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349380.html
Copyright © 2011-2022 走看看