java中的接口是类吗
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:
如果我们在登录状态下,主页是这样的:
在未登录状态下,主页是这样的:
我们先在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
new_book.html
book_list.html
书名 | 出版社 | 定价 | 零售价 | 修改 | 删除 | ||
---|---|---|---|---|---|---|---|
{{ abook.title }} | {{ abook.pub_house }} | {{ abook.price }} | {{ abook.market_price }} | {% if request.session.userinfo %}修改 | 删除 | {% else %}您无权更改 | {% endif %}
第三步
图书管理系统使用演示
我们开启服务,并向首页发起请求(非登录状态):
在登录状态下,向首页发起请求:
我们又一次进入到了图书列表,但这次由于我们处于登录状态,所以可以对书籍进行修改和删除:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~