四.Django的template

如果要求不高,可以使用django admin做CRUD的操作,当然django admin也有许多定制方法,具体可以参见https://docs.djangoproject.com/en/1.9/ref/contrib/admin/。但是对于大多数的应用来说,还是希望自己能够可控地实现增删改查功能,并将其在页面上实现。那么,我们就需要通过template来存放我们的页面。

 

以下是Django官网对template的介绍

A template contains the static parts of thedesired HTML output as well as some special syntax describing how dynamiccontent will be inserted.Django defines a standard API for loading andrendering templates regardless of the backend. Loading consists of finding thetemplate for a given identifier and preprocessing it, usually compiling it toan in-memory representation. Rendering means interpolating the template withcontext data and returning the resulting string.

 

简言之,在template中,我们存放HTML页面,并通过Django的API能够调用这些界面,同时能够把一些数据传递到这些页面上。当然,Django也提供了一个非常强大的模板语言,DTL。

 

在这一小节中,我们通过页面来显示一下之前通过admin site存放入的信息。

 

1.      在echo文件夹下建立templates目录

2.      在urls中指定跳转路径

urls.py:

from django.conf.urls import url
from django.contrib import admin
import echo.views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    #设定相应跳转路径
    url(r'^lists/', echo.views.lists),
]


3.     在views中定义相应函数响应:

views.py:

# -*- coding: UTF-8 -*-
from django.shortcuts import render
from .models import Node
# Create your views here.

def lists(request):
    #从node节点中获取所有数据
    data = Node.objects.all()
    #建立context字典,将值传递到相应页面
    context = {
        'data': data,
    }
    #跳转到相应页面,并将值传递过去
    return render(request,'lists.html',context)<strong>
</strong>


在这个函数中,有一行data = Node.objects.all(),这是通过DJANGO的ORM来进行SQL操作,具体的ORM表达式可以参见django的相关文档,在此不再赘述。

 

4.   在templates目录下建立lists.html文件,并将views传递来的data数据显示在页面上,传递过来的data是一个对象,可以通过for循环来将其中的值显示。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <table>
        <tr>
            <th>节点名称</th>
            <th>节点地址</th>
            <th>节点类型</th>
        </tr>
        {% for item in data %}
            <tr>
                <td>{{ item.node_name }}</td>
                <td>{{ item.node_address }}</td>
                <td>{{ item.node_type }}</td>
            </tr>
        {% endfor %}
    </table>
</body>
</html>


其中用{% %}括起的就是django的模板语言,在django的模板语言中,包含了类似于for循环,if等条件判断语句,可以非常灵活地满足用户的各种需求。其中,{{ data }}用来在页面上显示data的值。此后,我们还将提到的include和block功能,将会非常方便地继承网页。

 

1.    访问url中定义的lists的路径,就可以访问相应页面了

http://127.0.0.1:8000/lists/








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章