开始本文的前提:
1. 已有一个Django项目
2. 该Django项目中已经创建了需要配置Template的目标应用
3. 目标应用的数据模型类(models.py)已经完成了【migrate】
4. 目标应用已经包含了一些样例数据

在我的环境中,以上前置条件都已经满足,具体如下:

Microsoft Windows [版本 10.0.18362.30]
(c) 2019 Microsoft Corporation。保留所有权利。

C:\Users\adamhuan>e:

E:\>cd PyCharm_data\Django_Me

E:\PyCharm_data\Django_Me>dir
 驱动器 E 中的卷是 新加卷
 卷的序列号是 86A4-FA5E

 E:\PyCharm_data\Django_Me 的目录

2019/06/10  08:47              .
2019/06/10  08:47              ..
2019/06/10  15:49              .idea
2019/06/10  08:47           139,264 db.sqlite3
2019/06/10  15:32              Django_Me
2019/06/10  15:33              HelloWorld
2019/06/05  14:33               650 manage.py
2019/06/10  15:20              templates
2019/06/05  14:33              venv
2019/06/08  10:26              __pycache__
               2 个文件        139,914 字节
               8 个目录 381,205,307,392 可用字节

E:\PyCharm_data\Django_Me>dir HelloWorld
 驱动器 E 中的卷是 新加卷
 卷的序列号是 86A4-FA5E

 E:\PyCharm_data\Django_Me\HelloWorld 的目录

2019/06/10  15:33              .
2019/06/10  15:33              ..
2019/06/08  11:19               487 admin.py
2019/06/05  14:34               100 apps.py
2019/06/07  20:38              migrations
2019/06/08  11:03               829 models.py
2019/06/05  14:34                63 tests.py
2019/06/10  15:33               113 urls.py
2019/06/10  15:10               282 views.py
2019/06/05  14:34                 0 __init__.py
2019/06/10  15:34              __pycache__
               7 个文件          1,874 字节
               4 个目录 381,205,307,392 可用字节

E:\PyCharm_data\Django_Me>

可以从上面的代码中看到,我有一个目标应用【HelloWorld】

接下来,看看Django的后端数据的情况

我的目标应用的用户信息,是直接拿的Django的用户信息(User);这一部分的详情如下:

E:\PyCharm_data\Django_Me>python manage.py shell
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
>>> from django.contrib.auth.models import User
>>> from HelloWorld.models import MicroBlog
>>>
>>> users = User.objects.get()
>>>
>>> users

>>>
>>> print(users)
admin
>>>
>>> users = User.objects.get(username='admin')
>>>
>>> users

>>>
>>> print(users)
admin
>>>
>>> users.id
1
>>> users.password
'pbkdf2_sha256$150000$srzh6tP0t0rD$JWkHzQWZQxkMu7BifiL2r0mJsF7uUvf5MhPAIHBDhNY='
>>>
>>> users.email
'dkseven_eli@163.com'
>>>
>>> type(users)

>>>

再看看目标应用的数据:

>>> blogs = MicroBlog.objects.all()
>>>
>>> blogs
, , ]>
>>>
>>> for blog in blogs:
...    print(blog.createtime)
...    print(blog.author)
...    print(blog.body)
...    print("===========")
...
2019-06-10 00:45:00+00:00
admin
这会成功吗?
===========
2019-06-08 03:03:00+00:00
admin
测试,数据插入是否有异常。
===========
2019-06-08 02:42:00+00:00
admin
你好,这是我的第一篇Django测试。
===========
>>>

可以看到,当前,我的Django中的目标应用是有一些数据的。

下面开始实现本文如题所示的需求:
为Django的应用,配置一个前端页面,以便于展示后端数据库中的内容,而不是每次都要进入Django的后台管理页面(admin.py)才可以查阅数据。

在Django中,涉及到数据展示,我们通常是在目标应用中的【views.py】中做配置的。
在我们的环境中,这个文件位于:

E:\PyCharm_data\Django_Me>dir HelloWorld
 驱动器 E 中的卷是 新加卷
 卷的序列号是 86A4-FA5E

 E:\PyCharm_data\Django_Me\HelloWorld 的目录

2019/06/10  15:33              .
2019/06/10  15:33              ..
2019/06/08  11:19               487 admin.py
2019/06/05  14:34               100 apps.py
2019/06/07  20:38              migrations
2019/06/08  11:03               829 models.py
2019/06/05  14:34                63 tests.py
2019/06/10  15:33               113 urls.py
2019/06/10  15:10               282 views.py
2019/06/05  14:34                 0 __init__.py
2019/06/10  15:34              __pycache__
               7 个文件          1,874 字节
               4 个目录 381,205,307,392 可用字节

E:\PyCharm_data\Django_Me>

如上,【views.py】。

该文件的内容,编写好了之后,是这样的:

from django.shortcuts import render

# Create your views here.

from .models import MicroBlog

# 类

def MicroBlogView_posts(request):

    # do
    blogs = MicroBlog.objects.all()

    # return
    return render(request,"microblog/posts_id.html",{"blogs":blogs})

首先,为了可以访问到我们的数据,我们导入了数据模型类【MicroBlog】
然后,和前面命令行的方式一样的,通过数据模型类得到了全部的结果集【MicroBlog.objects.all()】,并存放到了变量【blogs】中
最后,通过render函数,将变量【blogs】渲染到了前端的模板文件【microblog/posts_id.html】的网页对象【blogs】中
这样,在页面上,我们想要拿到后端数据库的数据,就可以直接通过访问(循环、遍历)页面对象【blogs】就可以直接请求数据了。

接下来,要编写前端展示的页面:Django项目\templates\base.html

< !DOCTYPE html>


    
    
    
    {% block title %}
    
    {% endblock %}
    
    


    
{% block content %} {% endblock %}

注意,上面代码中,定义了两个【BLOCK块】:
1. 块:title
2. 块:content

定义动态内容块:

{% block content %}
{% endblock %}

然后,定义前端页面的模板文件。
上面的动态的BLOCK中的定义,是在模板文件中定义的。

模板文件:Django项目\templates\microblog/post_id.html
注意,这个模板文件的路径,需要和目标应用的【views.py】中指向的路径匹配,否则render函数的渲染会无法找到文件。

文件:post_id.html

{% extends "base.html" %}
{% block title %}
My First Blog
{% endblock %}

{% block content %}

我的博客

    {% for blog in blogs %}
  • {{ blog.body }}
  • {% endfor %}
{% endblock %}

————————
这样,就全部配置好了。
然后,重启Django应用配置。

————————
效果查看:
访问:
http://127.0.0.1:8000/microblog/

————————————
Done。

说点什么

avatar

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒