Django搭建图书管理系统04:View视图初探

数据库虽然已经有了,但是用户通常只需要这个庞大数据库中的很小一部分进行查看、修改等操作。为此还需要代码来恰当的取出并展示数据,这一部分代码就被称为视图

Django 中视图的概念是**「一类具有相同功能和模板的网页的集合」**。

Hello World!

首先写一个最简单的视图函数,在浏览器中打印出Hello World!字符串。

打开book/views.py,写出视图函数:

# book/views.py
from django.shortcuts import render
from django.http import HttpResponse# 视图函数
def book_list(request):return HttpResponse("图书管理员你好!")

**网页都是从视图派生而来。**每一个视图表现为一个简单的Python函数,它必须要做的只有两件事:返回一个包含被请求页面内容的 HttpResponse对象,或者抛出一个异常,比如 Http404

视图函数中的request与网页发来的请求有关,里面包含getpost的内容、用户浏览器、系统等信息。Django调用book_list函数时会返回一个含字符串的 HttpResponse对象。

有了视图函数,还需要配置URLconfs,将用户请求的URL链接关联起来。换句话说,URLconfs的作用是将URL映射到视图中。

前面的文章中已经将URL分发给了book应用,因此这里只需要修改之前添加的book/urls.py就可以。添加以下代码:

# book/urls.py
from django.urls import path
from . import views# 正在部署的应用的名称
app_name = 'book'# 存放映射关系的列表
urlpatterns = [# path函数将url映射到视图path('', views.book_list, name='book_list'),
]

**Django 将会根据用户请求的 URL 来选择使用哪个视图。**本例中当用户请求book链接时,会调用views.py中的book_list函数,并返回渲染后的对象。参数name用于反查url地址,相当于给url起了个名字,以后会用到。

测试一下刚才敲的代码是否工作正常。

终端中输入python manage.py runserver,运行调试服务器:

(venv) PS E:\djangopj\library> python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...System check identified no issues (0 silenced).
July 06, 2023 - 13:33:02                               
Django version 4.2.3, using settings 'library.settings'
Starting development server at http://127.0.0.1:8000/  
Quit the server with CTRL-BREAK.   

成功运行后,打开浏览器,输入url地址http://127.0.0.1:8000/book,其中127.0.0.1:8000是调试服务器的本地地址,book是项目路由library\urls.py分发的地址

运气好的话,浏览器中会打印出图书管理员你好!字符串:

图书管理员你好!

准备工作

在章节编写Model模型中虽然定义了数据库表,但是这个表是空的,不方便展示View调取数据的效果。所以在写View之前,需要往数据表里记录一些数据。接下来就做这个工作。

网站后台概念

网站后台,有时也称为网站管理后台,是指用于管理网站的一系列操作,如:数据的增加、更新、删除等。在项目开发的初期,因为没有真实的用户数据和完整的测试环境,会频繁地使用后台修改测试数据。

Django内置了一个很好的后台管理工具,只需要些少量代码,就可以实现强大的功能。

创建管理员账号(Superuser)

管理员账号(Superuser)是可以进入网站后台,对数据进行维护的账号,具有很高的权限。这里我们需要创建一个管理员账号,以便添加后续的测试数据。

终端里输入python manage.py createsuperuser指令,创建管理员账号:

(env) E:\django_project\my_blog>python manage.py createsuperuser
Username: dusai
Email address: dusaiphoto@foxmail.com
Password:
Password (again):
Superuser created successfully.

指令会提示你输入账号名字、邮箱和密码,根据喜好填入即可。

将bookPost注册到后台中

接下来我们需要“告诉”Django,后台中需要添加bookPost这个数据表供管理。

打开book/admin.py,写入以下代码:

book/admin.pyfrom django.contrib import admin# 别忘了导入bookrPost
from .models import bookPost# 注册bookPost到admin中
admin.site.register(bookPost)

这样就简单的注册好了。

在后台中遨游

细心的同学可能已经发现,Django项目生成的时候就自动配置好了后台的settings和url,因此不需要我们再操心了。

启动server,在浏览器中输入http://127.0.0.1:8000/admin/,一切正常的话就看到下面的登录界面了:
在这里插入图片描述

输入刚才创建的管理员账号,登录进去:

img

红框内就是刚才添加的bookPost数据表,点击进入后,再点击右上角的ADD book 按钮,到达如下页面:

img

仔细看一下表单中的每一项,发现与book中的字段完全符合;因为updated字段指定了自动添加,这里就没显示了。

将表单填好后,点击保存:

在这里插入图片描述

可以看到book中多了刚才录入的一条数据。按照同样的方法,再写入几条数据:

至此准备工作就已经大功告成。

检视数据库

2018-10-29 新增内容

通过上面的操作,我们的数据库中已经有1条用户数据、3条文章数据了。

这时候就需要用到数据库可是软件:Navicat Premium 一套可创建多个连接的数据库开发工具,让你从单一应用程序中同时连接 MySQL、Redis、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 。它与 OceanBase 数据库及 Amazon RDS、Amazon Aurora、Amazon Redshift、Amazon ElastiCache、Microsoft Azure、Oracle Cloud、MongoDB Atlas、Redis Enterprise Cloud、阿里云、腾讯云和华为云等云数据库兼容。你可以快速轻松地创建、管理和维护数据库。

下载并安装,用它链接MySQL,查看项目数据库表。比如说auth_user就是用户数据表了:

在这里插入图片描述
在这里插入图片描述

你可以用它检查项目代码中数据库的操作是否正常,这在开发阶段是非常实用的。

总结

本章初步感受了View的工作模式,创建了Superuser在后台录入了几条测试数据。

下一章将编写更有意义的View,准备好后老司机就开车了。

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

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

相关文章

HarmonyOS/OpenHarmony应用开发-程序包多HAP机制(上)

一、多HAP机制设计目标 方便开发者模块化的管理应用,好的应用一般都是模块化管理,模块之间属于松耦合关系。多HAP方便了开发者将业务划分成多个模块,每个模块放到独立的HAP中。例如支付类应用,有统一的主界面,主界面管…

图论之寻找桥边

目录 ①基准法 ②并查集 ③逆向思维之标记环边 ④并查集压缩路径 ①基准法 在图论中,一条边被称为“桥”代表这条边一旦被删除,这张图的连通块数量会增加。等价地说,一条边是一座桥当且仅当这条边不在任何环上。一张图可以有零或多座桥。…

golang数据库操作相应内容--推荐【比较全】

Go为开发数据库驱动定义了一些标准接口,开发者可以根据定义的接口来开发相应的数据库驱动,只要是按照标准接口开发的代码, 以后需要迁移数据库时,不需要任何修改。 一、database/sql接口 1.1sql.Register 这个存在于database/s…

Java新特性:Lambda表达式

Java新特性:Lambda表达式 Lambda 表达式(Lambda expression),也可称为闭包(Closure),是 Java(SE)8 中一个重要的新特性。Lambda 表达式允许我们通过表达式来代替功能接口…

Django_haystack全文搜索

haystack是全文搜索的框架,支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎,点击查看官方网站。 whoosh是用纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序…

一百二十八、Kettle——从Hive增量导入到ClickHouse

一、目标 用Kettle把Hive的DWS层数据增量导入到ClickHouse中 工具版本:Kettle:8.2 Hive:3.1.2 ClickHouse21.9.5.16 全量导入请访问拙作链接 http://t.csdn.cn/Rqvuvhttp://t.csdn.cn/Rqvuv 二、前提准备 (一)kettl…

Vue3 +Echarts5 可视化大屏——屏幕适配

项目基于Vue3 Echarts5 开发,屏幕适配是使用 scale 方案 Echarts组件按需引入,减少打包体积 地图组件封装(全国&省份地图按需加载) 效果图: 屏幕适配 大屏适配常用的方案有 rem vw/vh 和 scale 。 rem vw/vh …

vue 使用 npm run dev命令后 自动打开浏览器为谷歌

文章目录 需求分析 需求 vue 启动后,想要其自动打开指定浏览器(谷歌)并设置要打开的IP地址和端口号 分析 package.json 打开package.json文件加上 --open chrome index.js 打开index.js文件,将浏览器设置为自动打开

模板类与继承

模板类与继承 模板类继承普通类普通类继承模板类的实例化版本。普通类继承模板类模板类继承模板类模板类继承模板参数给出的基类 模板类继承普通类 基类 派生类 测试函数; 普通类继承模板类的实例化版本。 模板基类 普通类继承模板基类的实例化版本: 普通…

LVS和keepa lived群集

keepa lived 简述 一.keepalived 服务重要功能 1管理LS负载均衡器软件 keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理Lvs配置以及服务的启动 停止功能 这会使 LVS应用跟更加简便 2 支持故障自动切换 (failover) ①两台知己同时安装好kee…

Kotlin~Decorator装饰器模式

概念 装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。可以运行时动态添加新的功能,而无需改变原来的代码。 特点: 灵活扩展新的功能动态…

buu-Reverse-[2019红帽杯]childRE

目录 [2019红帽杯]childRE 修饰函数名和函数签名是什么? 对于变换部分的具体分析: [2019红帽杯]childRE 下载附件,查壳,无壳 在IDA中打开,定位主函数 int __cdecl main(int argc, const char **argv, const char …