日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Django(part39)--制作图书管理系统

發(fā)布時間:2023/12/19 windows 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django(part39)--制作图书管理系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學(xué)習(xí)筆記,僅供參考,有錯必究


文章目錄

      • 制作圖書管理系統(tǒng)
        • 第一步
        • 第二步
        • 第三步



制作圖書管理系統(tǒng)


我們基于上一個博客Django(part38)–制作登錄界面的mywebsite_bookstore項目,制作一個圖書管理系統(tǒng)。


第一步


向數(shù)據(jù)庫中添加一些圖書信息

首先我們先創(chuàng)建后臺管理賬號:

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應(yīng)用下的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)

開啟服務(wù),進入admin數(shù)據(jù)庫后臺管理系統(tǒng),隨便添加幾本書:


第二步


設(shè)置登錄用戶可以瀏覽、刪除、修改和添加圖書信息,但是未登錄的用戶,只能瀏覽圖書信息,無權(quán)更改。


首先,我們在主模板文件夾下,修改主頁homepage.html:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>首頁</title> </head> <body>{# 判斷是否有userinfo來確定是否已經(jīng)登陸 #}{% 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>

如果我們在登錄狀態(tài)下,主頁是這樣的:

在未登錄狀態(tài)下,主頁是這樣的:


我們先在bookstore應(yīng)用下的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應(yīng)用下的views.py模塊中添加視圖函數(shù):

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):# 為添加新收功能提供權(quán)限驗證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方法來創(chuàng)建新書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/">添加新書成功,點我跳轉(zhuǎn)到書庫</a>')def list_books(request):books = models.Book.objects.all()return render(request, 'book_list.html', locals())def mod_book_info(request, book_name):# 先根據(jù)book_id 找到對應(yīng)的一本書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 + "的圖書信息,刪除失敗")

在主模板文件夾下創(chuàng)建各種模板。

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">您無權(quán)更改</td>{% endif %}</tr>{% endfor %}</table> </body> </html>

第三步


圖書管理系統(tǒng)使用演示

我們開啟服務(wù),并向首頁發(fā)起請求(非登錄狀態(tài)):

點擊查看全部圖書,進入所有圖書列表:


點擊進入書庫:

點擊顯示所有圖書,返回所有圖書列表。


在登錄狀態(tài)下,向首頁發(fā)起請求:

點擊添加新書,并按照字段類型添加書籍:

添加成功后,自動跳轉(zhuǎn)到如下頁面,我們點擊這個超鏈接,進入書庫:

點擊顯示所有圖書:

我們又一次進入到了圖書列表,但這次由于我們處于登錄狀態(tài),所以可以對書籍進行修改和刪除:

總結(jié)

以上是生活随笔為你收集整理的Django(part39)--制作图书管理系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男女高h视频 | 国产极品一区 | 国产一区免费看 | 干干操操 | 久久成人动漫 | 火影忍者羞羞漫画 | 国产精品国产三级国产三级人妇 | 欧美性生交大片免费看 | 91蜜桃传媒精品久久久一区二区 | 国产中文字幕精品 | 国产精品色呦呦 | 亚洲免费一级 | 黄色在线观看视频网站 | 一级美女大片 | 向日葵视频在线 | 日韩 欧美 精品 | 国产毛片不卡 | 欧美精品一 | 玖玖在线免费视频 | www,色| 欧美视频一级 | 神宫寺奈绪一区二区三区 | 国产高清视频免费观看 | 婷婷视频| 少妇性bbb搡bbb爽爽爽欧美 | av作品在线 | 国产精品无码久久久久成人app | 中国国产bdsm紧缚捆绑 | 亚洲v欧美 | 午夜影院a | 欧美激情爱爱 | 欧美成人三级在线播放 | 美女啪啪国产 | 1区2区视频 | 精品久久人妻av中文字幕 | www.色视频 | 人妻精油按摩bd高清中文字幕 | 国产在线视频网站 | 91操操操| 久久精品无码中文字幕 | 中文字幕视频免费观看 | 四虎成人免费视频 | 上原亚衣av一区二区三区 | 高h视频在线播放 | 人妻少妇偷人精品久久久任期 | 青青操av在线| 日韩欧美一二三区 | 午夜少妇视频 | 色婷婷18| 亚洲欧洲日本精品 | 成人网站免费观看 | 豆豆色成人网 | 偷拍一区二区三区四区 | 欧美一区二区三区在线观看 | 又黄又高潮的视频 | 椎名由奈av一区二区三区 | 泰坦尼克号3小时49分的观看方法 | 香蕉影院在线 | 日韩国产欧美一区二区三区 | 天堂网www. | 亚洲精品综合精品自拍 | 欧亚一区二区 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 大尺度床戏揉捏胸视频 | 日韩a级一片 | 精品区 | 欧美比基尼 | 欧美aⅴ| 波多野结衣不卡视频 | 绯色av一区二区三区高清 | 久久久国 | 美女张开腿流出白浆 | 爱情岛亚洲品质自拍极速福利网站 | 亚洲电影在线看 | 东方成人av在线 | 波多野结衣中文一区 | 麻豆视频在线观看免费网站 | 色伊人影院 | 久久婷婷一区二区 | 老司机精品福利导航 | 2018天天干天天操 | 精品国产一区二区三区性色 | 国产精品理伦片 | 亚洲色偷精品一区二区三区 | 国产精品不卡av | 美女脱了裤子让男人桶 | 97国产精品视频 | 精品无码久久久久久久久久 | 超碰免费在线97 | 一区二区三区在线 | 色哟哟中文字幕 | 欧美一级电影在线 | 色婷久久 | 欧美一级黄色片 | 亚洲一级理论片 | 无码视频在线观看 | 奇米影视亚洲春色 | 亚洲精品视频久久 | 少妇大叫太粗太大爽一区二区 |