实践四:数据模型与数据库

news/2025/3/17 10:22:39/文章来源:https://www.cnblogs.com/chrisxyz/p/18771980
实践四:数据模型与数据库
内容概述:本节课我们将引入数据模型(model),通过创建数据模型和数据表,我们就可以将信息存储在数据库中,并将数据库中的信息呈现在页面上。
1. 在完成实践一、实践二、实践三的基础上开始本项目,进入激活虚拟环境。
pipenv shel

提示:接下来我们要新建一个名为posts的APP,该APP用于展示公告信息。我们首先要做的就是新建posts应用,并配置好它的template、views和url,让该页面能正常显示(第2-8步骤同实践二、三的home和about应用)

2. 新建一个posts应用

python manage.py startapp posts

3.在my_project/settings.py文件中添加posts应用

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','home', 'about','posts',#新增内容
]

4.在templates中添加posts.html文件,打开posts.html文件并添加如下代码:

{% extends 'base.html' %}
{% block content %}
<h1>信息公告页面</h1>
{% endblock content %}

5.更新posts/views.py文件,代码如下:

# posts/views.py
from django.views.generic import TemplateViewclass PostsPageView(TemplateView):template_name='posts.html'

6.更新my_project和posts中的urls.py文件

(1)在posts中添加urls.py文件,并添加如下代码:

from django.urls import path
from . import views
urlpatterns = [path('',views.PostsPageView.as_view(),name='posts'),
]

(2)更新my_project/urls.py文件,代码如下:

from django.contrib import admin
from django.urls import path, include urlpatterns = [path('admin/', admin.site.urls),path('', include('home.urls')) ,path('about/', include('about.urls')) ,path('posts/', include('posts.urls'))#新加代码
]

7.更新base.html文件,将posts应用的超链接也放进导航页面

    <!-- 页眉的导航栏将会被子模板继承 --><nav class="navbar navbar-expand-sm bg-light">   <div class="container-fluid"><ul class="navbar-nav"><li class="nav-item"><a class="nav-link" href="{% url 'home' %}">主页</a></li><!-- 新加内容 --><li class="nav-item"><a class="nav-link" href="{% url 'posts' %}">信息公告</a></li><li class="nav-item"><a class="nav-link" href="{% url 'about' %}">关于我们</a></li></ul></div></nav>

8.运行服务器,点击“信息公开”超链,你将看到:

python manage.py runserver

 提示:现在我们已经把urls和templates配置好了,接下来我们将加入数据库

9.打开posts/models.py文件,并添加如下代码:

from django.db import models
# Create your models here. class Post(models.Model):text = models.TextField()

解释:这里我们新建了一个数据库模型Post,它只包含一个字段text,text的类型为TextField()。Django的其他模型类型和字段列表请参考链接:Django模型数据类型和字段列表

10. 创建数据库迁移文件

python manage.py makemigrations

当执行该语句后,项目中的“migrations”文件夹会自动生成名为“0001_initial.py”的python文件。这个文件中包含初始的数据模型信息。

结果如下:

11. 创建或更新数据表(根据上一步骤生成的迁移文件)

python manage.py migrate

结果如下:

 12. 创建管理员

在终端输入以下代码创建管理员,有了管理员账号后我们才能登录仅管理页面。

提示:请输入简短的密码,输入密码时终端不会显示你输入的信息,请记牢密码。

python manage.py createsuperuser

 13. 启动本地服务器

python manage.py runserver

14.打开后台管理页面的链接( http://127.0.0.1:8000/admin ),并用刚创建的管理员账号密码登录到后台管理页面。

 15.更新posts/admin.py文件

from django.contrib import admin
from .models import Post
# Register your models here.
admin.site.register(Post)

提示:该操作将Post数据模型注册到管理页面,即让Post表在管理页面上显示出来。再次刷新管理页面,此时Post表已经添加到管理页面了。

16.点击“+Add”按钮,添加一则或或多则公告,并保存。

17.更改公告的名称

此时公告的名称为“Post object(1)”,为了便于后期查询,我们不适用默认的名称。

更新posts/models.py中的代码如下:

from django.db import models# Create your models here.
class Post(models.Model):text = models.TextField()def __str__(self):return self.text[:50]

再次刷新管理页面,此时显示效果如下:

 提示:接下来我们需要让数据库中的公告信息显示在posts.html页面中

18.更新posts/views.py文件

# posts/views.py
from django.views.generic import ListView #引用ListView视图
from .models import Postclass PostsPageView(ListView):model=Post    #添加模型template_name='posts.html'

19.更新templates/posts.html文件

{% extends 'base.html' %}
{% block content %}
<h1>信息公告页面</h1>
<ul>{% for post in object_list %}<li>{{post}}</li>{% endfor %}
</ul>
{% endblock content %}

20.刷新信息公告页面,效果如下:

此时,我们已经能从数据库中提取信息并呈现在页面上了,请在管理页面中多添加几条公告,查看效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/900266.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

clickhouse 开启认证 SQL 方式

ClickHouse 访问控制 RBAC 用户账户:包含身份信息、权限、允许的主机、角色和设置。 角色:权限容器,可分配给用户或其他角色。 行策略:定义表中行的可见性。 设置配置文件:集中管理用户/角色的配置参数。 配额:限制资源使用(如查询次数、内存)。 权限层级 权限按层级划…

No.66 Vue---Vue引入路由配置、路由传递参数、嵌套路由配置

一、Vue引入路由配置在Vue中,我们可以通过 vue-router 路由管理页面之间的关系 Vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举.1.1 在vue中引入路由 第一步:安装路由npm install -save vue-router第二步:配置独立的路由…

开源!Django-Vue3-Admin的Python后台管理系统

DjangoAdmin 是一个基于 Django + Vue3 的前后端分离的后台管理系统,采用了最新的前后端技术栈,内置了丰富的功能模块,可以帮助开发者快速搭建企业级中后台产品。Django-Vue3-Admin 项目简介 Django-Vue3-Admin 是一个基于 Django + Vue3 的前后端分离的后台管理系统,采用了…

陕西人文:1964年陕西14座古县因何纷纷“改县名”?

2016年11月西安市户县撤县设区,改名鄠邑区。其中有一节简介:”1964年“鄠县”改名“户县”,实际上在同一时期改名的还有:盩厔,邠县,醴泉,栒邑,汧阳,郿县,郃阳,雒南,商雒、洵阳,沔县,鄜县,葭县,这13个古县。 【户县老县城】鄠县(hu xian)就是现在之西安市鄠邑区…

在鸿蒙NEXT中实现完全自定义导航栏

在日常app开发中,导航栏扮演着重要的角色。鸿蒙提供了系统导航栏Navigation,它支持很多属性的修改,但是应用需求更加灵活多变,比如有的导航栏有背景图片,有的导航栏要求渐变色,有的导航栏需要随时隐藏和显示等等。 遇到这些需求系统的Navigation就无法实现,这时候我们就需…

鸿蒙开发中console.log和hilog的区别

在日常开发中打印日志是调试程序非常常用的操作,在鸿蒙的官方文档中介绍了hilog这种方式,有些前端转过来的友友发现console.log也可以进行日志打印。有一段时候幽蓝君也非常喜欢使用console.log,因为它看起来好像更加简单方便。 那么今天幽蓝君就来和大家说一说console.log和…

HarmonyOS NEXT开发实战教程--招聘app

这一周忙到起飞,只能在周末发个文章。今天的内容比较简单,是一个招聘app,适合新手友友参考,大佬们可以直接忽略。 看一下效果图:这是一个比较常见的应用,大家做这类应用建议大家先分析一下应用和页面的结构,避免写完发现错了又改。 这个应用首先有4个tabbaritem,是很常…

解决vscode XHR failed

问题:主要流程: 获取自己的COMMIT_ID(就是一串数字,每个人的不一样) 下载vscode-server-linux-x64.tar.gz文件 解压vscode-server-linux-x64.tar.gz,移动解压后的所有文件到~/.vscode-server/bin/COMMIT_ID目录获取COMMIT_ID cd ~/.vscode-server/bin && ls # 那串数字…

下载神器!支持视频号、抖音等多平台资源下载!

res-downloader —— 一款基于 Go + Wails + Vue 实现的,支持下载视频、音频、图片、m3u8、直播流等常见网络资源的软件工具。大家好,我是 Java陈序员。 今天,给大家介绍一款支持视频号、抖音等多平台资源下载的开源软件,开箱即用!关注微信公众号:【Java陈序员】,获取开…

零经验选手,Compose 一天开发一款小游戏!

什么,Compose 也能做游戏?!不会 Unity 没关系!游戏开发零经验选手手把手带你飞,一天写出一个4399小游戏!是兄弟就一起来!猛男翻卡牌 猛男启动 继上一个 Compose 练习项目 SimpleTodo 之后,又尝试用 Compose 来做了一个翻牌记忆游戏【猛男翻卡牌】。这次是零经验写游戏项…

ftp替代品,如何提升数据交换的安全性与高效性?

文件传输协议(FTP)是一个跨平台的、简单且易于实现的协议,用于在网络上的服务器和客户端之间传输文件,也是企业会经常选择的一种传输方式。 业务场景一: 基于信息相关安全要求,医院会采用防火墙、网闸等将网络隔离为内网和外网,但网络隔离后,医院仍存在将报告资料等文…

【分享】常见的几种数据摆渡系统介绍

随着企业数字化转型的逐步深入,企业投入了大量资源进行信息系统建设,信息化程度日益提升。在这一过程中,企业也越来越重视核心数据资产的保护,数据资产的安全防护成为企业面临的重大挑战。 一、网络隔离实施的背景 1、互联网的广泛应用:随着互联网的飞速发展,企业与外部的…