关注微信公众号 太平洋学习网 扫描二维码
最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

django入门7:django动态数据与模板

扩展 太平洋学习网 浏览 评论

 Django模板介绍

django模板是用来展示后台数据的,在python django中,模板文件的后缀就是我们常用的.html文件,从后台数据库取数据需要用到django模板标签。

什么是模板标签呢?

django标签可以在html页面中嵌套python代码,使用django模板标签可以获取到views.py传给我们的数据并展示出来,例如html静态文件中取数据,我们可以使用如下形式。

{{user.id}}

如果后台传入的是一个list集合,集合里面存入的是User对象,遍历list集合的话可以使用以下方法来遍历,如获取User对象的id。

{% for user in list%}
 {{ user.id}}
{% endfor %}

下面将来做一个小案例,当用户登录http://127.0.0.1:8000主页就能马上获取用户列表,如图所示,本案例用到了bootrap框架,不然列表会很丑。

QQ截图20170925222715.png

首先在models.py文件里面添加一个User的实体类(模型),需要同步到数据库中,详情请参考:jango入门4:django模型创建和数据库表的同步,代码如下。

from django.db import models
# models.Model定义之后会自动与数据库中user表关联
class User(models.Model):
    # 设置主键,如果不设置系统也会生成一个id属性
    id = models.IntegerField(primary_key=True)
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    phone = models.CharField(max_length=50)
    address = models.CharField(max_length=100)

然后在我们的sqlite数据库的user表中添加一些用户数据,

QQ截图20170925224737.png

第一步:在主urls.py里面添加一个总的url配置,把实现的细节交给blog下面的urls.py来处理,代码如下。

urlpatterns = [
    url(r'^admin/', admin.site.urls), # 忽略它
    url(r'^', include('blog.urls')), #交由blog模块下面的urls.py来处理
]

第二步:在blog模块下的urls.py中的urlpatterns中添加一个跳转到首页的url正则表达式,“name=”依然可以省略。

urlpatterns = [
    # 跳转到列表页面,加了r'^$'表示是主页面,前面django入门5有讲到
    url(r'^$', views.user_list, name='user_list'),
]

第三步:用户输入http://127.0.0.1:8000 ,urls.py会根据这个 r'^$' ,url正则表达式找到views.py里面的user_list()方法,下面是user_list方法的实现,给前端传送一个key为users,value为lists集合的结果。

from django.http import HttpResponse
from django.shortcuts import render, render_to_response
from blog.models import User
# 获取用户列表的方法
def user_list(request):
    # 查询所有数据的方法
    lists = User.objects.all()
    return render(request, 'user/user_list.html', {'users': lists})

 第四步:我们需要在blog/templates/user文件夹下新建用户列表的模板文件user_list.html,如图所示。

QQ截图20170925225238.png

第五步:实现user_list.html模板文件,利用上面介绍到的django模板标签将users数据遍历后获取出来,代码如下。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户列表页</title>
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
</head>
<body>
<table style="width: 500px">
    <tr>
        <td>ID</td>
        <td>用户名</td>
        <td>密码</td>
        <td>电话</td>
        <td>住址</td>
        <td>操作</td>
    </tr>
    {% for user in users %}
        <tr>
            <td>{{ user.id }}</td>
            <td>{{ user.username }}</td>
            <td>{{ user.password }}</td>
            <td>{{ user.phone }}</td>
            <td>{{ user.address }}</td>
            <td><a href="{% url 'user_detail' pk=user.id %}">查看</a>&nbsp;
                <a href="{% url 'user_edit' pk=user.id %}">修改</a></td>
        </tr>
    {% endfor %}
</table>
</body>
</html>

效果如图一所示。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/kuozhan/2017/0925/241.html