一、图书管理系统
admin
2023-07-11 16:24:43
0

一、图书管理系统增删改查

导入bootstrap的三种方式:

1、首先在django项目中的settings.py中设置:

STATIC_URL = '/static/'
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,'static')
]

2、在html文件中的三种方式:bootstrap依赖与jquery,所以jquery要写在bootstrap前面

方式一:





方式二:




{% load static %}
    

方式三:




{% load static %}
    

urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views
# from app01.views import book_delete
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.book_list),
    url(r'^book_list/$', views.book_list,name='book_list'),
    url(r'^book_add/$', views.book_add),
    url(r'^author_add/$', views.author_add),
    url(r'^publish_add/$', views.publish_add),
    url(r'^author_list/$', views.author_list),
    url(r'^publish_list/$', views.publish_list),
    url(r'^book_delete/(?P\d+)$',views.book_delete,name='book_delete'),
    url(r'^author_delete/$',views.author_delete),
    url(r'^author_update/(\d+)$',views.author_update),
    # url(r'^publish_delete/(?P\d+)$',views.publish_delete),
    url(r'^publish_delete/$',views.publish_delete),
    url(r'^book_update/(?P\d+)$',views.book_update),
    url(r'^publish_update/(\d+)$',views.publish_update),
    url(r'',views.error),
]

views.py

from django.shortcuts import render, redirect, reverse, HttpResponse
# Create your views here.
from app01 import models


def book_list(request):
    book_list = models.Book.objects.all()
    return render(request, 'book_list.html', {"book_list": book_list})


def book_update(request, id):
    if request.method == "GET":
        book = models.Book.objects.get(pk=id)
        authors = models.Author.objects.all()
        publish_list = models.Publish.objects.all()
        return render(request, 'book_update.html', locals())
    else:
        name = request.POST.get('name')
        price = request.POST.get('price')
        pub_date = request.POST.get('pub_date')
        authors = request.POST.getlist('authors')
        publish = request.POST.get('publish')
        # 第一种方式
        book = models.Book.objects.get(pk=id)
        book.name = name
        book.price = price
        book.pub_date = pub_date
        book.publish_id = publish
        book.save()
        # 第二种方式。修改作者
        book.authors.clear()
        book.authors.add(*authors)
        return redirect('/book_list/')

def book_delete(request, id):
    try:
        models.Book.objects.get(pk=id).delete()
    except Exception as e:
        print(e)
    url = reverse('book_list')
    return redirect(url)

def book_add(request):
    if request.method == "GET":
        authors = models.Author.objects.all()
        publish_list = models.Publish.objects.all()
        return render(request, 'book_add.html', locals())
    else:
        name = request.POST.get('name')
        price = request.POST.get('price')
        pub_date = request.POST.get('pub_date')
        authors = request.POST.getlist('authors')
        publish = request.POST.get('publish')
        book = models.Book.objects.create(name=name, price=price, pub_date=pub_date, publish_id=publish)
        # 创建书跟作者的关联关系
        book.authors.add(*authors)
        return redirect('/book_list/')

def author_list(request):
    authors = models.Author.objects.all()
    return render(request, 'author_list.html', {'author_list': authors})

def publish_list(request):
    publishs = models.Publish.objects.all()
    return render(request, 'publish_list.html', {'publish_list': publishs})

def author_delete(request):
    id = request.GET.get('id')
    ret = models.Author.objects.filter(pk=id).delete()
    return redirect('/author_list/')

def publish_delete(request,*args,**kwargs):
    # print(args,kwargs)
    id = request.GET.get('id')
    # print(id)
    # ret = models.Publish.objects.filter(pk=kwargs["id"]).delete()
    ret = models.Publish.objects.filter(pk=id).delete()
    return redirect('/publish_list/')

def author_update(request, id):
    if request.method == "GET":
        author = models.Author.objects.get(pk=id)
        return render(request, 'author_update.html', locals())
    else:
        name = request.POST.get('name')
        sex = request.POST.get('sex')
        models.Author.objects.filter(pk=id).update(name=name, sex=sex)
        return redirect('/author_list/')

def publish_update(request,id):
    if request.method=="GET":
        publish=models.Publish.objects.get(pk=id)
        return render(request,"publish_update.html",locals())
    else:
        name=request.POST.get("name")
        addr=request.POST.get("addr")
        models.Publish.objects.filter(pk=id).update(name=name,addr=addr)
        return redirect('/publish_list/')

def author_add(request):
    if request.method=="GET":
        return render(request,"author_add.html")
    else:
        name=request.POST.get('name')
        sex=request.POST.get('sex')
        models.Author.objects.create(name=name,sex=sex)
        return redirect('/author_list/')

def publish_add(request):
    if request.method=="GET":
        return render(request,"publish_add.html")
    else:
        name=request.POST.get("name")
        addr=request.POST.get("addr")
        models.Publish.objects.create(name=name,addr=addr)
        return redirect('/publish_list/')

def error(request):
    return HttpResponse('404')

models.py

from django.db import models

# Create your models here.

#用了OneToOneField和ForeignKey,模型表的字段,后面会自定加_id
# ManyToManyField会自动创建第三张表
# *************重点
# 一对一的关系:OneToOneField
# 一对多的关系:ForeignKey
# 多对多的关系:ManyToManyField

class Publish(models.Model):
    # id如果不写,会自动生成,名字叫nid,并且自增(不同的数据库,叫的名称也不一样)
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    addr = models.CharField(max_length=64)
    email = models.EmailField()
class Author(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    # 数字类型
    sex = models.CharField(max_length=32)
    # 可以用ForeignKey,但是得设置唯一性约束,会报警告,不建议用,建议用OneToOneField
    # authordetail=models.ForeignKey(unique=True)
    # to='AuthorDetail'  加引号,这个表能找到就可以,不用引号,类必须在上面定义
    authordetail = models.OneToOneField(to='AuthorDetail', to_field='id',null=True)


    def __str__(self):
        return self.name

class AuthorDetail(models.Model):
    id = models.AutoField(primary_key=True)
    phone = models.CharField(max_length=32)
    addr = models.CharField(max_length=64)

class Book(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32,db_index=True)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    pub_date=models.DateField(auto_now_add=True)
    publish = models.ForeignKey(to=Publish, to_field='id',on_delete=models.CASCADE)
    authors = models.ManyToManyField(to=Author)
    def __str__(self):
        return self.name

templates/author_add.html




    
    
    新增作者



    
        
            

新增作者

            
                                                  

作者名字:

                
                                     

性别:

                
                                      
    

templates/author_list.html

{% extends 'base.html' %}

{% block content %}
    
    
        作者列表
                     新增                                                                    id                     作者名                     性别                                                                    {% for author in author_list %}                                              {{ forloop.counter }}                         {{ author.name }}                         {{ author.sex }}                         编辑                         删除                                      {% endfor %}                                       
                                                           
  •                                                      «                                              
  •                     
  • 1
  •                     
  • 2
  •                     
  • 3
  •                     
  • 4
  •                     
  • 5
  •                     
  •                                                      »                                              
  •                                       
        
    {% endblock %}

    templates/author_update.html

    
    
    
        
        
        修改作者
    
    
    
        
            
                

    修改作者

                
                                                      

    作者姓名:

                    
                                         

    性别:

                    
                                               

    templates/base.html

    
    
    
        
        
        {#    #}
     {% load static %}
    {#            #}
     
        图书列表
    
    
    
                                                 图书管理系统             
                                                        
  • Link
  •                                              Dropdown                                                       
  • Action
  •                             
  • Another action
  •                             
  • Something else here
  •                                                          
  • Separated link
  •                                                                                                                   图书列表     作者列表   出版社列表                               {% block  content %}             {% endblock %}              

    templates/book_add.html

    
    
    
        
        
        新增图书
    
    
    
        
            
                

    新增图书

                
                                                      

    书名:

                                                          

    价格:

                                                          

    出版时间:

                                                          

    出版社:  {#                        #}                         {#                            北京出版社#}                         {#                            上海出版社#}                         {#                            南京出版社#}                         {#                        #}                               {% for publish in publish_list %}                                 {{ publish.name }}                             {% endfor %}                                              

                                                          

    作者:  {#                        #}                         {#                            曹雪芹#}                         {#                            吴承恩#}                         {#                            曹雪芹#}                         {#                        #}                               {% for author in authors %}                                     {{ author.name }}                             {% endfor %}                                              

                                                                

    templates/book_list.html

    {% extends 'base.html' %}
    
    {% block content %}
        
             图书列表
            
                新增
                
                    
                    
                        id
                        书名
                        价格
                        出版日期
                        作者
                        出版社
                        编辑
                        删除
                    
                    
                    
                    {% for book in book_list %}
                        
                            {{ forloop.counter }}
                            {{ book.name }}
                            {{ book.price }}
                            {{ book.pub_date | date:'Y-m-d' }}
                            
                                {% for author in book.authors.all %}
                                    {% if forloop.last %}
                                        {{ author.name }}
                                    {% else %}
                                        {{ author.name }}|
                                    {% endif %}
                                {% endfor %}
                            
                            {{ book.publish.name }}
                            编辑
                            删除
                        
                    {% endfor %}
                    
                
            
            
                
                    
                        
  •                                                      «                                              
  •                     
  • 1
  •                     
  • 2
  •                     
  • 3
  •                     
  • 4
  •                     
  • 5
  •                     
  •                                                      »                                              
  •                                             {% endblock %}

    templates/book_update.html

    
    
    
        
        
        修改图书
    
    
    
        
            
                

    修改图书

                
                                                      

    书名:

                                                          

    价格:

                                                          

    出版时间:

                                                          

    出版社:                               {% for publish in publish_list %}                                 {% if publish == book.publish %}                                     {{ publish.name }}                                 {% else %}                                     {{ publish.name }}                                 {% endif %}                             {% endfor %}                                              

                                                          

    作者:                               {% for author in authors %}                                 {% if author in book.authors.all %}                                     {{ author.name }}                                 {% else %}                                     {{ author.name }}                                 {% endif %}                             {% endfor %}                                              

                                                                

    templates/publish_add.html

    
    
    
        
        
        新增出版社
    
    
    
        
            
                

    新增出版社

                
                                                      

    出版社名称:

                                                          

    出版社地址:

                                                                

    templates/publish_list.html

    {% extends 'base.html' %}
    
    {% block content %}
        
        
             出版社列表
            
                新增
                
                    
                    
                        id
                        出版社名称
                        出版社地址
                    
                    
                    
                    {% for publish in publish_list %}
                        
                            {{ forloop.counter }}
                            {{ publish.name }}
                            {{ publish.addr }}
    
                            编辑
                            删除
                        
                    {% endfor %}
                    
                
            
            
                
                    
                        
  •                                                      «                                              
  •                     
  • 1
  •                     
  • 2
  •                     
  • 3
  •                     
  • 4
  •                     
  • 5
  •                     
  •                                                      »                                              
  •                                             {% endblock %}

    templates/publish_update.html

    
    
    
        
        
        修改出版社
    
    
    
        
            
                

    修改出版社

                
                                                      

    出版社名称:

                                                          

    出版社地址:

                                                                


    上一篇:生成树协议(STP)工作原理与算法

    下一篇:玩家必备教程小程序四川麻将原来有挂!开挂技巧

    相关内容

    热门资讯

    OpenAI,正式组建机器人事... 人工智能(AI)领域巨头OpenAI发布公告,宣布大力扩张内部机器人事业部,正式全面切入硬件赛道,实...
    星火空间完成近亿元Pre-A轮... 据星火空间消息,6月1日,合肥星火空间科技有限公司完成近亿元Pre-A轮融资。本轮融资由云泽资本和轨...
    刚刚,宇树IPO闪电过会!王兴... 智东西 作者 | 许丽思 编辑 | 漠影 智东西6月1日报道,刚刚,宇树通过上交所上市委会议审议。 ...
    京东工业发起百川计划 携手上游... 京东工业大模型生态发布会6月1日在北京举行,京东工业携手合作伙伴正式开启“百川计划”,从数据、模型、...
    强脑科技预计今年机械手销量大涨... IT之家 6 月 2 日消息,据彭博社 2 日(今天)报道,强脑科技预计,随着中国人形机器人产业快速...
    一图看懂差距!iPhone 1... 快科技6月2日消息,iPhone 18 Pro不同版本电池容量不同的相关话题冲上社交平台热搜榜,引发...
    iPhone 18 Pro 或... 据科技狐,近日,知名爆料人 Sonny Dickson 分享了 iPhone 18 Pro 全套机模...
    武契奇:不排除卸任总统后担任总... 塞尔维亚总统武契奇近期密集释放政坛人事与大选相关信号,明确无意在 2027 年总统任期届满后谋求连任...
    6月新机夯到拉盘点,告诉你哪台... 现在这形势,手机升价是不可能躲得过的了,而且涨价期至少持续两年。那既然内存涨价躲不过,就只能选升级大...
    伊朗公开已故最高领袖哈梅内伊安... 新华社德黑兰6月2日电 据伊朗伊斯兰共和国通讯社2日报道,根据伊朗已故最高领袖阿里·哈梅内伊生前遗愿...