如果要求不高,可以使用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)
在这个函数中,有一行data = Node.objects.all(),这是通过DJANGO的ORM来进行SQL操作,具体的ORM表达式可以参见django的相关文档,在此不再赘述。
4. 在templates目录下建立lists.html文件,并将views传递来的data数据显示在页面上,传递过来的data是一个对象,可以通过for循环来将其中的值显示。
节点名称
节点地址
节点类型
{% for item in data %}
{{ item.node_name }}
{{ item.node_address }}
{{ item.node_type }}
{% endfor %}
其中用{% %}括起的就是django的模板语言,在django的模板语言中,包含了类似于for循环,if等条件判断语句,可以非常灵活地满足用户的各种需求。其中,{{ data }}用来在页面上显示data的值。此后,我们还将提到的include和block功能,将会非常方便地继承网页。
1. 访问url中定义的lists的路径,就可以访问相应页面了
http://127.0.0.1:8000/lists/