python-django案例-显示用户名列表

概述

本文通过案例“显示用户名列表”讲解视图、路由、模板、模型的关系

过程如下:

  1. 浏览器访问网址
  2. 路由系统通过url匹配,找到相应的视图函数,将请求转交给视图函数
  3. 视图函数调用模型查询user表
  4. 视图函数将查询结果传递给模板
  5. 最后浏览器显示用户列表

视图

打开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代码+逻辑控制代码(特殊标记)

  1. {% 中间是python代码 %}
  2. {{ 要输出的内容 }},相当于print()函数
  3. for语句结尾一定要有endfor
  4. {%for item in users%}中的users,是 视图 向 模板 传递 dict数据 中的 key

注意:
模板名字userlist.html,与url中的userlist和视图函数userlist()的同名不是必须得,完全可以随便起名,但为了保证命名规范,这里采用同名处理

测试

启动服务,打开浏览器访问http://localhost:8000/userlist ,结果如下图:

总结

本文通过案例方式讲解:

  1. 浏览器向django框架发送请求
  2. 路由系统匹配上url后,将请求转交给相应的视图函数处理
  3. 视图函数调用模型查询数据库,并将查询结果放入dict中,视图加载模板,并将dict传给模板,执行模板中的python代码,最后将html代码发送给浏览器

由此可见视图比较重要,一方面调用模型查询数据库,另一方面加载模板显示数据,最后将html代码发送给浏览器