Django(part39)--制作图书管理系统
学习笔记,仅供参考,有错必究
文章目录
- 制作图书管理系统
- 第一步
- 第二步
- 第三步
制作图书管理系统
我们基于上一个博客Django(part38)–制作登录界面的mywebsite_bookstore项目,制作一个图书管理系统。
第一步
向数据库中添加一些图书信息
首先我们先创建后台管理账号:
F:\MyStudio\PythonStudio\goatbishop.project01\Django\mywebsite_bookstore>python manage.py createsuperuser
Username (leave blank to use 'goatbishop'):
Email address: goatbishop@gmail.com
Password:
Password (again):
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: N
Password:
Password (again):
Superuser created successfully.
我们打开bookstore应用下的admin.py,并进行注册:
from django.contrib import admin
from . 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:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>首页</title>
</head>
<body>{# 判断是否有userinfo来确定是否已经登陆 #}{% if request.session.userinfo %}欢迎:{{request.session.userinfo.username }}<br><a href="/userinfo/logout/">退出登录</a><br><br><div><a href="/bookstore/add/">添加新书</a><a href="/bookstore/list_all/">查看全部图书</a></div>{% else %}
<ul><li><a href="/userinfo/login/">登陆</a></li><li><a href="/userinfo/reg/">注册</a></li></ul>游客, 您可以<a href="/bookstore/list_all/">查看全部图书</a><br><br>若您想对书籍信息进行修改,请先登录!{% endif %}</body>
</html>
如果我们在登录状态下,主页是这样的:
在未登录状态下,主页是这样的:
我们先在bookstore应用下的urls.py模块中添加路由:
from django.urls import re_path
from . 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.http import HttpResponse
from . import models
from django.http import Http404def homepage(request):return render(request, 'index.html')def new_book(request):# 为添加新收功能提供权限验证if 'userinfo' not in request.session:raise Http404if 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('<a href="/bookstore/">添加新书成功,点我跳转到书库</a>')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_priceabook.save() # 提交修改html = "修改成功 <div><a href='/bookstore/list_all/'>回到书籍浏览界面</a></div>"return HttpResponse(html)except:return HttpResponse("修改失败")from django.http import HttpResponseRedirect # 改入 HttpResponseRedirect模块用于 重定向url
def 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
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>书库</title>
</head>
<body><ul>{% if request.session.userinfo %}<li><a href="/bookstore/add/">添加新图书</a></li><li><a href="/bookstore/list_all/">显示所有图书</a></li>{% else %}<li><a href="/bookstore/list_all/">显示所有图书</a></li>{% endif %}</ul>
</body>
</html>
mod_price.html
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>修改价格</title>
</head>
<body><form action="/bookstore/mod/{{ abook.title }}/" method="post"><div>书名: {{ abook.title }}</div><div>版社名: {{ abook.pub_house }}</div><div>定价: {{ abook.price }}</div><div>零售价:<input type="text" name="market_price" value="{{ abook.market_price }}"placeholder="零售价" required></div><div><input type="submit" value="修改价格"></div></form>
</body>
</html>
new_book.html
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>添加新书</title>
</head>
<body><form action="/bookstore/add/" method="post"><div><input type="text" name="title" placeholder="新书名" required value="书名"></div><div><input type="text" name="pub_house" placeholder="新版社名" required></div><div><input type="text" name="price" placeholder="定价" required></div><div><input type="text" name="market_price" placeholder="零售价" required></div><div><input type="submit" value="添加新书"></div></form>
</body>
</html>
book_list.html
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>图书列表</title>
</head>
<body><a href="/bookstore/">进入书库</a> <a href="/">返回首页</a><table><tr><th>书名</th><th>出版社</th><th>定价</th><th>零售价</th><th>修改</th><th>删除</th></tr>{% for abook in books %}<tr><td>{{ abook.title }}</td><td>{{ abook.pub_house }}</td><td>{{ abook.price }}</td><td>{{ abook.market_price }}</td>{% if request.session.userinfo %}<td><a href="/bookstore/mod/{{ abook.title }}">修改</a></td><td><a href="/bookstore/del/{{ abook.title }}">删除</a></td>{% else %}<td colspan="2">您无权更改</td>{% endif %}</tr>{% endfor %}</table>
</body>
</html>
第三步
图书管理系统使用演示
我们开启服务,并向首页发起请求(非登录状态):
点击查看全部图书
,进入所有图书列表:
点击进入书库
:
点击显示所有图书
,返回所有图书列表。
在登录状态下,向首页发起请求:
点击添加新书
,并按照字段类型添加书籍:
添加成功后,自动跳转到如下页面,我们点击这个超链接,进入书库:
点击显示所有图书
:
我们又一次进入到了图书列表,但这次由于我们处于登录状态,所以可以对书籍进行修改和删除:
Django(part39)--制作图书管理系统相关推荐
- 基于docker搭建django的web图书管理系统
一.概要 本次将使用docker搭建一个基于django框架的图书管理系统,本次用到的技术包括: docker基本命令: 数据卷挂载: dockerfile编写: docker网络技术: django ...
- 利用C语言制作图书管理系统
利用C语言制作图书管理系统 #include<stdio.h> #include<windows.h> #define LEN sizeof(commdity) #define ...
- Django实现简单图书管理系统
一.系统功能 二.页面效果 1.登陆界面 2.管理页面 3.添加和编辑页面 三.Django代码 1.目录结构 2.关键文件代码 目录 一.系统功能 二.页面效果 1.登陆界面 2.管理页 ...
- python django实现的图书管理系统v1.0
图书管理系统v1.0 middlewares.py from django.utils.deprecation import MiddlewareMixin from django.shortcuts ...
- 数据结构项目—— 用顺序表制作图书管理系统
<图书信息管理系统>的制作: 全部代码如下(各部分已注释): #include "pch.h" #include<string> #include<f ...
- MFC制作图书管理系统
图书管理系统 1 概述 图书管理系统结构简单明了,工作任务分配清晰,组织结构相互协调,部署任务分工明确,流通部,办公室等人员办公方便. 1.1系统简介:图书管理系统,结构,组织,部门与读者.图书的采编 ...
- 基于Python+Django+Mysql的图书管理系统
系统实体对象: 图书类型:图书类别,类别名称,可借阅天数 图书:图书条形码,图书名称,图书所在类别,图书价格,库存,出版日期,出版社,图书图片,图书简介,图书文件 页面效果:
- 基于python的图书管理系统测试步骤_Django admin实现图书管理系统菜鸟级教程完整实例...
Django 有着强大而又及其易用的admin后台,在这里,你可以轻松实现复杂代码实现的功能,如搜索,筛选,分页,题目可编辑,多选框. 简单到,一行代码就可以实现一个功能,而且模块之间耦合得相当完美. ...
- Django简单的图书表的增删改查
Django简单的图书管理系统 创建项目book,这个应该都会就不放图了 一.配置数据库 在book/setting文件中找到DATABAES进行修改,并在主应用init文件下导入数据库模块 二.创建 ...
最新文章
- 大角度人脸转正--Towards Large-Pose Face Frontalization in the Wild
- LVS+Keepalive 实现负载均衡高可用集群
- magisk下载里显示没有模块_重大更新 | 仓耳云黑大字库amp;模块版本更新!
- 关于真正免费的嵌入式GUI
- 数据结构基础(1) --Swap Bubble-Sort Select-Sort
- 【6.1】图片风格迁移 Neural Style Transfer
- 24小时删!看完这17个超牛逼大数据视频让你妥妥进大厂!(限时领)
- 利用jmeter做一个简单的性能测试并进行参数化设置
- 第7月第25天 xcode bundle calayer动画
- zepto部分报错及解决方案
- Windows CMD命令大全
- visio软件接口流程图_Microsoft Office Visio绘制系统框图以及流程图的操作步骤
- Foxmail:修改签名和模板(邮箱、邮件)
- Prisma 与瘦后端
- 微信小程序自定义tabbar以及闪烁问题
- 魔法宝石(思维啊……)
- 音频剪切、合成、淡入淡出
- jsliang 2020 求职系列
- 智能手机屏幕解锁图案研究
- 入行IC选择国企、私企还是外企?(内附各IC大厂薪资福利情况)