Django(part39)--制作图书管理系统(django图书管理系统毕业设计)

网友投稿 289 2022-08-31


Django(part39)--制作图书管理系统(django图书管理系统毕业设计)

学习笔记,仅供参考,有错必究

文章目录

​​制作图书管理系统​​

​​第一步​​​​第二步​​​​第三步​​

制作图书管理系统

我们基于上一个博客Django(part38)–制作登录界面的mywebsite_bookstore项目,制作一个图书管理系统。

第一步

向数据库中添加一些图书信息

首先我们先创建后台管理账号:

F:\MyStudio\PythonStudio\goatbishop.project01\Django\mywebsite_bookstore>python manage.py createsuperuserUsername (leave blank to use 'goatbishop'):Email address: goatbishop@gmail.comPassword:Password (again):This password is entirely numeric.Bypass password validation and create user anyway? [y/N]: NPassword:Password (again):Superuser created successfully.

我们打开bookstore应用下的admin.py,并进行注册:

from django.contrib import adminfrom . import models# Register your models here.class Book_Manager(admin.ModelAdmin): list_display = ['title', 'pub_house','price', 'market_price'] list_filter = ['pub_house'] search_fields = ['title', 'pub_house'] list_editable = ['market_price'] admin.site.register(models.Book, Book_Manager)

开启服务,进入admin数据库后台管理系统,随便添加几本书:

第二步

设置登录用户可以浏览、删除、修改和添加图书信息,但是未登录的用户,只能浏览图书信息,无权更改。

首先,我们在主模板文件夹下,修改主页homepage.html:

首页 {# 判断是否有userinfo来确定是否已经登陆 #} {% if request.session.userinfo %} 欢迎:{{request.session.userinfo.username }}
退出登录

{% else %} 游客, 您可以查看全部图书

若您想对书籍信息进行修改,请先登录! {% endif %}

如果我们在登录状态下,主页是这样的:

在未登录状态下,主页是这样的:

我们先在bookstore应用下的urls.py模块中添加路由:

from django.urls import re_pathfrom . import viewsurlpatterns = [ re_path(r'^$', views.homepage), re_path(r'^add/$', views.new_book), re_path(r'^list_all/$', views.list_books), re_path(r'^mod/(\w+)/$', views.mod_book_info), re_path(r'^del/(\w+)/$', views.del_book),]

再bookstore应用下的views.py模块中添加视图函数:

from django.shortcuts import render# Create your views here.from django.import HttpResponsefrom . import modelsfrom django.import Http404def homepage(request): return render(request, 'index.html')def new_book(request): # 为添加新收功能提供权限验证 if 'userinfo' not in request.session: raise Http404 if request.method == 'GET': return render(request, 'new_book.html') elif request.method == 'POST': title = request.POST.get('title', '') pub_house = request.POST.get('pub_house', '') price = request.POST.get('price', '') market_price = request.POST.get('market_price', '') # 用Book.object管理器的create方法来创建新书 abook = models.Book.objects.create(title=title, price=price, market_price=market_price, pub_house=pub_house) print('添加新书,成功添加新书:', abook.title) return HttpResponse('添加新书成功,点我跳转到书库')def list_books(request): books = models.Book.objects.all() return render(request, 'book_list.html', locals())def mod_book_info(request, book_name): # 先根据book_id 找到对应的一本书 try: abook = models.Book.objects.get(title = book_name) except: return HttpResponse("没有找到" + book_name + "的图书信息") if request.method == 'GET': return render(request, "mod_price.html", locals()) elif request.method == 'POST': try: m_price = request.POST.get('market_price', '0.0') abook.market_price = m_price abook.save() # 提交修改 html = "修改成功

" return HttpResponse(html) except: return HttpResponse("修改失败")from django.import HttpResponseRedirect # 改入 HttpResponseRedirect模块用于 重定向urldef del_book(request, book_name): try: abook = models.Book.objects.get(title = book_name) abook.delete() return HttpResponseRedirect('/bookstore/list_all/') except: return HttpResponse("没有找到" + book_name + "的图书信息,删除失败")

在主模板文件夹下创建各种模板。

index.html

书库

mod_price.html

修改价格

书名: {{ abook.title }}
版社名: {{ abook.pub_house }}
定价: {{ abook.price }}
零售价:

new_book.html

添加新书

book_list.html

图书列表 进入书库   返回首页

{% for abook in books %} {% if request.session.userinfo %} {% else %} {% endif %} {% endfor %}
书名 出版社 定价 零售价 修改 删除
{{ abook.title }} {{ abook.pub_house }} {{ abook.price }} {{ abook.market_price }}修改 删除您无权更改

第三步

图书管理系统使用演示

我们开启服务,并向首页发起请求(非登录状态):

在登录状态下,向首页发起请求:

我们又一次进入到了图书列表,但这次由于我们处于登录状态,所以可以对书籍进行修改和删除:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:聊聊SpringBoot整合Nacos自动刷新配置的问题
下一篇:Django(part36)--cookies(Django3)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~