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


文章目录

  • 制作图书管理系统
    • 第一步
    • 第二步
    • 第三步

制作图书管理系统

我们基于上一个博客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> &nbsp;<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)--制作图书管理系统相关推荐

  1. 基于docker搭建django的web图书管理系统

    一.概要 本次将使用docker搭建一个基于django框架的图书管理系统,本次用到的技术包括: docker基本命令: 数据卷挂载: dockerfile编写: docker网络技术: django ...

  2. 利用C语言制作图书管理系统

    利用C语言制作图书管理系统 #include<stdio.h> #include<windows.h> #define LEN sizeof(commdity) #define ...

  3. Django实现简单图书管理系统

    一.系统功能 二.页面效果 1.登陆界面 2.管理页面 3.添加和编辑页面 三.Django代码 1.目录结构 2.关键文件代码​​​​​​ 目录 一.系统功能 二.页面效果 1.登陆界面 2.管理页 ...

  4. python django实现的图书管理系统v1.0

    图书管理系统v1.0 middlewares.py from django.utils.deprecation import MiddlewareMixin from django.shortcuts ...

  5. 数据结构项目—— 用顺序表制作图书管理系统

    <图书信息管理系统>的制作: 全部代码如下(各部分已注释): #include "pch.h" #include<string> #include<f ...

  6. MFC制作图书管理系统

    图书管理系统 1 概述 图书管理系统结构简单明了,工作任务分配清晰,组织结构相互协调,部署任务分工明确,流通部,办公室等人员办公方便. 1.1系统简介:图书管理系统,结构,组织,部门与读者.图书的采编 ...

  7. 基于Python+Django+Mysql的图书管理系统

    系统实体对象: 图书类型:图书类别,类别名称,可借阅天数 图书:图书条形码,图书名称,图书所在类别,图书价格,库存,出版日期,出版社,图书图片,图书简介,图书文件 页面效果:

  8. 基于python的图书管理系统测试步骤_Django admin实现图书管理系统菜鸟级教程完整实例...

    Django 有着强大而又及其易用的admin后台,在这里,你可以轻松实现复杂代码实现的功能,如搜索,筛选,分页,题目可编辑,多选框. 简单到,一行代码就可以实现一个功能,而且模块之间耦合得相当完美. ...

  9. Django简单的图书表的增删改查

    Django简单的图书管理系统 创建项目book,这个应该都会就不放图了 一.配置数据库 在book/setting文件中找到DATABAES进行修改,并在主应用init文件下导入数据库模块 二.创建 ...

最新文章

  1. 大角度人脸转正--Towards Large-Pose Face Frontalization in the Wild
  2. LVS+Keepalive 实现负载均衡高可用集群
  3. magisk下载里显示没有模块_重大更新 | 仓耳云黑大字库amp;模块版本更新!
  4. 关于真正免费的嵌入式GUI
  5. 数据结构基础(1) --Swap Bubble-Sort Select-Sort
  6. 【6.1】图片风格迁移 Neural Style Transfer
  7. 24小时删!看完这17个超牛逼大数据视频让你妥妥进大厂!(限时领)
  8. 利用jmeter做一个简单的性能测试并进行参数化设置
  9. 第7月第25天 xcode bundle calayer动画
  10. zepto部分报错及解决方案
  11. Windows CMD命令大全
  12. visio软件接口流程图_Microsoft Office Visio绘制系统框图以及流程图的操作步骤
  13. Foxmail:修改签名和模板(邮箱、邮件)
  14. Prisma 与瘦后端
  15. 微信小程序自定义tabbar以及闪烁问题
  16. 魔法宝石(思维啊……)
  17. 音频剪切、合成、淡入淡出
  18. jsliang 2020 求职系列
  19. 智能手机屏幕解锁图案研究
  20. 入行IC选择国企、私企还是外企?(内附各IC大厂薪资福利情况)

热门文章

  1. 修改linux系统中自带的jdk
  2. java性能调优工具--笔记
  3. find命令的xargs参数的使用---Linux学习笔记
  4. maven工程错误汇总
  5. 阿里数据库内核月报:2016年03月
  6. 前端,我为什么不要你(转)
  7. 常用网络命令使用技巧详解续编1
  8. (二)GitHub的使用随记
  9. 使用CDS view开发SAP Marketing contact的facet追溯工具
  10. 洛谷T1874 快速求和