概述
本文通过案例“显示用户名列表”讲解视图、路由、模板、模型的关系
过程如下:
- 浏览器访问网址
- 路由系统通过url匹配,找到相应的视图函数,将请求转交给视图函数
- 视图函数调用模型查询user表
- 视图函数将查询结果传递给模板
- 最后浏览器显示用户列表
视图
打开blog/views.py文件,增加如下代码:
from django.shortcuts import render
#从当前目录中导入models文件
from .models import *
def userlist(request):
#查询数据库
users=User.objects.all()
#将查询结果放入dict中,传给模板,传递数据的类型是dict
return render(request,'blog/userlist.html',{'users':users})
路由
打开myweb/urls.py文件,将url和上面的视图函数映射
url(r'^userlist', views.userlist),
当访问路径是userlist时,将请求转交给视图函数userlist()处理
注意:
url中的userlist和视图函数userlist()的同名不是必须得,完全可以随便起名,但为了保证命名规范,这里采用同名处理
模板
在文件夹templates/blog文件夹下创建userlist.html文件,核心代码如下:
<ul>
{%for item in users%}
<li>{{item.username}}</li>
{%endfor%}
</ul>
说明:
之前文章中有讲过,django中的模板是 HTML代码+逻辑控制代码(特殊标记)
{% 中间是python代码 %}{{ 要输出的内容 }},相当于print()函数- for语句结尾一定要有
endfor {%for item in users%}中的users,是 视图 向 模板 传递 dict数据 中的 key
注意:
模板名字userlist.html,与url中的userlist和视图函数userlist()的同名不是必须得,完全可以随便起名,但为了保证命名规范,这里采用同名处理
测试
启动服务,打开浏览器访问http://localhost:8000/userlist ,结果如下图:
总结
本文通过案例方式讲解:
- 浏览器向django框架发送请求
- 路由系统匹配上url后,将请求转交给相应的视图函数处理
- 视图函数调用模型查询数据库,并将查询结果放入dict中,视图加载模板,并将dict传给模板,执行模板中的python代码,最后将html代码发送给浏览器
由此可见视图比较重要,一方面调用模型查询数据库,另一方面加载模板显示数据,最后将html代码发送给浏览器