django第二课基于django图书借阅管理网站平台(代码片段)

笔触狂放 笔触狂放     2023-02-06     590

关键词:

概念

本文在上一篇文章之上完成登录,图书显示,关键字搜索以及分页功能

登录功能实现

当用户在首页进行输入学生用户信息后,点击登录按钮发送请求给服务器,地址请求为: /toLogin/

urls.py

path('toLogin/',views.toLogin),

将接收的学号和密码发送给服务器进行查询数据库进行验证,如果该学生不存在,则跳转至登录提示页面,否则进入主页,并将登录的用户信息存储起来

# 保存登录信息
student=[]

def toLogin(request):
    # 接收学生的登录信息,并将登录成功的学生信息临时存储
    num=request.POST["num"]
    psd=request.POST["psd"]
    # 根据登录信息查询数据库该学生是否存在
    global student
    student=Student.objects.filter(number=num,psd=psd)

    # 如果能查询到数据,则进入主页
    if student:
        return redirect(bookList)
    else:
        return render(request,"loginError.html")

主页地址请求为: 

path('bookList/',views.bookList),

views.py,将数据库中所有图书信息进行查询并做分页处理

def bookList(request):
    try:
        ym=request.GET["ym"]
    except:
        ym=1
    # 将所有图书信息查询出来
    bookList = Book.objects.all().values()
    p=paginator.Paginator(bookList,16)
    page=p.get_page(ym)
    bookList=page.object_list
    yms=p.page_range
    for b in bookList:
        b["image"] = "img/" + str(b["image"])
    return render(request, "home.html", "student": student[0], "bookList": bookList,"page":page,"yms":yms)

主页的html代码如下:

<!DOCTYPE html >
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>首页</title>
    % load static %
    <link rel="stylesheet" type="text/css" href="% static 'css/css1.css' %">

    <style type="text/css">
        #h_content 
            width: 100%;
            margin: 10px 0px;
        

        #h_content_top 
            width: 100%;
            height: 60px;
        
        #seach 
            width: 400px;
            margin: auto;
        

        #seach form 
            width: 380px;
            margin: 0px auto;
        

        #seach form .t_seach 
            width: 300px;
            height: 30px;
            border-radius: 3px;
            border-width: 3px;
            border-color: chocolate;
        

        #seach form .btn_seach 
            width: 60px;
            height: 30px;
            border-radius: 3px;
            border-width: 0px;
            background-color: #00aaff;
            color: white;
        

        #h_content_center 
            width: 100%;
        

        #h_content_center ul 
            list-style: none;
            width: 900px;
            margin: 0px;
            padding: 0px;
        

        #h_content_center ul li 
            width: 200px;
            float: left;
            margin: 5px;
        


        #h_content_center ul li img 
            width: 200px;
            margin: 0px auto;
        

        #h_content_center ul li p 
            width: 100%;
            text-align: center;
            color: black;
            font-size: 11px;
        

        #h_content_center a 
            text-decoration: none;
            color: black;
        

        #h_content_center a:LINK 
            color: black;
        

         #h_content_center a:HOVER 
            color: red;
        

        #h_content_foot ul 
            margin: 0px;
            padding: 0px;
            list-style: none;
        

        #h_content_foot ul li 
            width: 20px;
            height: 20px;
            font-size: 12px;
            float: left;
            margin: 10px;
            text-align: center;
        

        #h_content_foot ul li:HOVER 
            color: white;
            background-color: #0077ff;
        

        #nav
            width: 900px;
            height: 40px;
            margin-top: 20px;
            clear: left;
        
        #nav a
            text-decoration: none;
            margin: 3px;
            background-color: cadetblue;
        
        #nav a:hover
            background-color: #FF1719;
        

        #nav a.c_page
            background-color: #FF1719;
        
        #nav a.up_page,#nav a.do_page
            width: 80px;
            height: 40px;
            padding: 5px 10px;
            border-radius: 5px;
            color: white;
        
        #nav a.p_page
            width: 40px;
            height: 40px;
            padding: 3px;
            border-radius: 5px;
            color: white;
        

    </style>
    <script type="text/javascript">

         //定义方法,用于处理分页导航栏的样式
        function a_style() 
            //通过class选择器获得分页导航栏对象
            var aElements=document.getElementsByClassName("p_page");
            for (var i = 0; i < aElements.length; i++) 
                var text=aElements.item(i).innerHTML;
                if (text<10)
                    aElements.item(i).innerHTML="&nbsp;"+text+"&nbsp;";
                
            
        

    </script>
</head>
<body onload="a_style()">
<div id="h_body"
     style="width: 900px;
	height: 800px;margin: 10px auto;">
    <!-- 头部:登录的用户,历史记录,我的借阅,注销 -->
    % include "top.html" with stu=student %
    <!-- 内容 -->
    <div id="h_content">
        <div id="h_content_top">
            <div id="seach">
                <form action="/seach/" method="post">
                    % csrf_token %
                    <input type="text" class="t_seach" width="80" height="40"
                           name="seach" placeholder="根据书名搜索,例如:java"> &nbsp;&nbsp;<input
                        type="submit" class="btn_seach" name="submit" value="搜索">
                </form>
            </div>
        </div>
        <div id="h_content_center">
            <ul>
                % for foo in bookList %
                    <li ><a href="/bookInfo/?bookid= foo.id "><img alt=" foo.bookName "
                                                                                              src="% static foo.image %"></a>
                        <p><a href="/bookInfo/?bookid= foo.id "> foo.bookName </a></p>
                    </li>
                % endfor %
            </ul>
        </div>
        <!-- 显示页码导航栏 -->
        <div id="nav" align="center">
            <!-- 上一页 -->
            <!-- 判断当前页是否有上一页,如果有上一页则显示上一页的按钮,否则就不显示上一页 -->
            % if page.has_previous %
                <a href="/bookList/?ym= page.previous_page_number " class="up_page">上一页</a>
            % endif %
            <!-- 页码 -->
            % for ym in yms %
                % if page.number == ym %
                    <a href="/bookList/?ym= ym " class="p_page c_page"> ym </a>
                % else %
                    <a href="/bookList/?ym= ym " class="p_page"> ym </a>
                % endif %
            % endfor %

            <!-- 下一页 -->
            % if page.has_next %
                <a href="/bookList/?ym= page.next_page_number " class="do_page">下一页</a>
            % endif %
        </div>
    </div>
    <!-- 底部 -->
    % include "foot.html" %
</div>
</body>
</html>

其界面效果如下

根据关键字查询图书信息

在搜索文本框中输入要搜索的书籍名称的关键字,点击搜索后,发出请求  /seach/

urls.py中进行匹配

path('seach/',views.seach),

 views.py

def seach(request):
    info=request.POST["seach"]
    # 进行模糊查询
    bookList=Book.objects.filter(bookName__contains=info).values()
    try:
        ym = request.GET["ym"]
    except:
        ym = 1
    p = paginator.Paginator(bookList, 16)
    page = p.get_page(ym)
    bookList = page.object_list
    yms = p.page_range
    for b in bookList:
        b["image"] = "img/" + str(b["image"])
    return render(request, "home.html", "student": student[0], "bookList": bookList, "page": page, "yms": yms)

其页面效果如下

查看图书详情信息功能实现

当用户需要查看某一本图书的时候,进行选择对应的图书信息点击,想服务器发送请求 /bookInfo/

 urls.py文件中定义该地址

path('bookInfo/',views.bookInfo),

views.py文件中接收用户发送的图书id进行获取图书信息,以及该用户是否对该图书有借阅记录的状态获取

def bookInfo(request):
    id=request.GET["bookid"]
    # 根据id获得该对应的图书信息
    book=Book.objects.get(id=id)
    book.image="img/"+str(book.image)
    # 根据当前登录的学生的学号和图书id查询借阅记录表的借阅状态
    infos=UserBookInfo.objects.filter(number=student[0].number,bookId=id)
    # 如果未查询到,则状态为0,表示未借阅,1表示已借阅,2表示已归还
    state=  infos[0].state  if infos else 0
    return render(request,"bookInfo.html","student":student[0],"book":book,"state":state)

并显示在图书详细html页面上,其代码如下

<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>书籍详情</title>
    % load static %
<link rel="stylesheet" type="text/css" href="% static 'css/css1.css' %">

	<style type="text/css">
		#b_content input
			width: 200px;
			height: 40px;
            border-radius: 5px;
			color: white;
			font-size: 18px;
			font-weight: bold;
		
	</style>
	<script type="text/javascript">
		function a_() 
			alert("该书已借阅,不能同时借阅同一本书!!!");
		
	</script>
</head>
<body>
    <div id="body">
    	<!-- 头部 -->
    	% include "top.html" with stu=student %
    	<!-- 内容 -->
    	<div id="b_content">
    		<table>

    			<tr >
    				<td rowspan="5" width="30%" align="center">
    				<img alt="封面" title="封面"
    				src="% static book.image %"> </td>
    				<td width="70%"><b>书籍名称:</b>&nbsp;&nbsp; book.bookName </td>
    			</tr>
    			<tr>
    				<td><b>作者:</b>&nbsp;&nbsp; book.author </td>
    			</tr>
    			<tr>
    				<td><b>出版日期:</b>&nbsp;&nbsp; book.bookDate </td>
    			</tr>
    			<tr>
    				<td><b>出版社:</b>&nbsp;&nbsp; book.bookAddress </td>
    			</tr>
    			<tr>
    				<td><b>所属分类:</b>&nbsp;&nbsp; book.type </td>
    			</tr>
    			<tr>
    				<td colspan="2"><b>内容简介:</b>
    				<br>
    				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; book.info </td>
    			</tr>
    			<tr>
    				<td colspan="2" align="center">
                    % if state == 0 or state == 2 %
                        <a href="/addUserBookInfo/?bookid= book.id ">
    				<input type="button" style="background-color: #0077ff;" value="借阅">
    				</a>
                    % elif state == 1 %
                        <a onclick="a_()">
    				<input type="button" style="background-color: red;" value="已借阅">
    				</a>
                    % endif %
    				</td>
    			</tr>
    		</table>
    	</div>
    	<!-- 底部 -->
    	% include "foot.html" %
    </div>
  </body>
</html>

其界面效果如下

如果当前学生对某图书有借阅则不允许再对该书进行借阅

 

 

 

django第三课基于django图书借阅管理网站平台(代码片段)

概念本文在上一篇文章之上,完成借阅图书功能,查看借阅记录功能,归还图书,查看历史借阅记录,删除历史借阅记录等等借阅图书功能实现当前学生查阅图书的时候,如果当前学生没有借阅过该书࿰... 查看详情

django第一课基于django图书借阅管理网站平台(代码片段)

概念django服务器开发框架是一款基于Python编程语言用于web服务器开发的框架,采用的是MTV架构模式进行分层架构。项目搭建打开pycharm开发软件,打开开发软件的内置dos窗口操作命令行在这里指定项目存放的磁盘路径,... 查看详情

django第三课基于django图书借阅管理网站平台(代码片段)

概念本文在上一篇文章之上,完成借阅图书功能,查看借阅记录功能,归还图书,查看历史借阅记录,删除历史借阅记录等等借阅图书功能实现当前学生查阅图书的时候,如果当前学生没有借阅过该书࿰... 查看详情

django第一课基于django图书借阅管理网站平台(代码片段)

概念django服务器开发框架是一款基于Python编程语言用于web服务器开发的框架,采用的是MTV架构模式进行分层架构。项目搭建打开pycharm开发软件,打开开发软件的内置dos窗口操作命令行在这里指定项目存放的磁盘路径,... 查看详情

基于django的图书馆借阅系统(代码片段)

项目GitHub仓库项目需求系统建模活动图普通用户注册后通过前台页面登录,进行浏览、查询、借书、还书等操作。图书馆管理员通过后台管理界面登录,可直接对数据库进行增删改查操作。用例图首页用户可以选择登录或注册。... 查看详情

django第二课基于django超市订单管理系统开发(代码片段)

概念本文在上一文之上,针对管理员,经理,普通员工身份的用户操作用户管理模块功能。功能实现1.普通员工登录系统后,对于用户管理模块不具备操作其他用户信息的权限。因此当普通员工登录后,弹出对... 查看详情

计算机毕业设计django基于python图书馆借阅系统

...,易于操作。运行环境开发语言:Python框架:django/FALSKPython版本:python3.7.7数据库: 查看详情

django——图书管理系统(代码片段)

基于Django的图书管理系统1.主体功能1.列出图书列表、出版社列表、作者列表2.点击作者,会列出其出版的图书列表3.点击出版社,会列出旗下图书列表4.可以创建、修改、删除图书、作者、出版社2.界面展示图书馆首页:添加书籍... 查看详情

1004基于springboot+vue的图书管理系统

基于SpringBoot+Vue的图书管理系统图书管理系统项目简介功能简介技术选型数据库设计开发工具界面设计图书管理系统项目简介本项目为图书管理系统。实现了登录、注册、图书信息录入、图书下架、图书借阅、图书归还、借阅... 查看详情

django第二课银行账户管理系统开发(代码片段)

...入账户信息查询页面则点击该按钮触发点击事件,向django服务器发出请求 接着我们在urls.py中需要定义与该地址进行匹配的地址,并匹配后跳转至views.py文件中执行对应该功能的方法  views.py#创建方法,用于从数据库... 查看详情

基于jsp+ssm的图书借阅库存管理系统

本在线图书管理系统的开发,解决了传统图书管理方式的弊端问题,使得图书管理工作变得系统化、科学化。本系统的开发既方便了用户借阅书籍,又方便了管理员对图书馆的全面管理,同时方便后勤进行经费申... 查看详情

python毕业设计推荐

今天给大家推荐4个基于python的毕业设计/课程设计1.网上商城系统这是一个基于python+vue开发的商城网站,平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。... 查看详情

基于javaweb和mysql的图书借阅信息系统(代码片段)

...接:面试题库https://www.bloghut.cn/questionBank1、项目简介一个基于JavaWeb纯原生的图书借阅系统2、技术栈前端& 查看详情

javaswing期末大作业-----图书借阅管理系统(代码片段)

...系统子项目:需求分析第一模块:图书信息管理第二模块:读者信息管理第三模块:类型信息管理第四模块:借阅信息管理第五模块:用户信息管理子项目:数据库设计子项目:图书借阅系统中类... 查看详情

基于java的图书馆借阅管理系统的设计与实现--毕业开题报告

基于Java的图书馆借阅管理系统的设计与实现–开题报告这个先写一版开题报告,后续有时间给大家提供论文。题目:基于Java的图书馆借阅管理系统的设计与实现一、选题依据1.国内外有关的研究动态图书馆是一个信息系... 查看详情

django

楚天千里清秋,水随天去秋无际。Django(一):web服务端实例Django(二):Django完整的登陆示例Django(三):模板语言Django(四):ORMDjango(五):视图和路由系统图书管理系统(一):出版社列表增加、删除和编辑图书管理系统(二):图书列表的增加... 查看详情

java人的第二个项目————图书管理系统(io版)(代码片段)

引言各位小伙伴大家好,今天跟大家分享一个小项目,基于文本界面实现图书管理系统(基于IO流实现),这个项目集成了java几乎基础的知识,值得一练,下面我将跟大家一起回顾与分享一下在该项目... 查看详情

django1.11搭建图书管理系统(代码片段)

1.准备工作:1.1项目目录1.2项目setting.py文件修改INSTALLED_APPS=[‘django.contrib.admin‘,‘django.contrib.auth‘,‘django.contrib.contenttypes‘,‘django.contrib.sessions‘,‘django.contrib.messages‘,‘django.contrib.staticfi 查看详情