简易的图书管理系统
urls.py
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', views.home, name='home1'),
url(r'^book_list', views.book_list, name='book_show'),
url(r'^add_book', views.add_book, name='add'),
url(r'^edit_book/(?P\d+)', views.edit_book, name='edit'),
url(r'^delete_book/(\d+)', views.delete_book, name='delete')
]
models.py
from django.db import models
# Create your models here.
# 图书表
class Book(models.Model):
# 书名
title = models.CharField(max_length=64)
# 出版日期
publish_date = models.DateField(auto_now_add=True)
# 价格
price = models.CharField(max_length=254)
# 图书与出版社 一对多
publish = models.ForeignKey(to='Publish')
# 图书与作者 多对多
authors = models.ManyToManyField(to='Author')
# 出版社表
class Publish(models.Model):
name = models.CharField(max_length=64)
addr = models.CharField(max_length=254)
# 作者表
class Author(models.Model):
name = models.CharField(max_length=64)
age = models.IntegerField()
# 作者表与作者细节表 一对一
author_detail = models.OneToOneField(to='AuthorDetail')
# 作者细节表
class AuthorDetail(models.Model):
gender_choices = [
(1, '男'),
(2, '女'),
(3, '其他'),
]
gender = models.IntegerField(choices=gender_choices)
phone = models.CharField(max_length=11)
views.py
from django.shortcuts import render, redirect, reverse
from app01 import models
# Create your views here.
def home(request):
return render(request, 'home.html')
def book_list(request):
book_queryset = models.Book.objects.all()
return render(request, 'book_show.html', locals())
def add_book(request):
if request.method == 'POST':
title = request.POST.get('title')
publish_date = request.POST.get('publish_date')
price = request.POST.get('price')
publish_id = request.POST.get('publish')
authors_lists = request.POST.getlist('authors')
# 操作数据库
# 书籍表
book_obj = models.Book.objects.create(title=title, publish_date=publish_date, price=price, publish_id=publish_id)
# 书籍与作者关系表
book_obj.authors.add(*authors_lists)
# 后端反向解析
_url = reverse('book_show')
# 后端重定向
return redirect(_url)
publish_queryset = models.Publish.objects.all()
author_queryset = models.Author.objects.all()
return render(request, 'add_book.html', locals())
def edit_book(request, edit_id):
edit_obj = models.Book.objects.filter(pk=edit_id).first()
if request.method == 'POST':
title = request.POST.get('title')
publish_date = request.POST.get('publish_date')
price = request.POST.get('price')
publish_id = request.POST.get('publish')
authors_lists = request.POST.getlist('authors')
# 操作数据库
# 书籍表 models.Book.objects.filter(pk=edit_id).update(title=title, publish_date=publish_date, price=price, publish_id=publish_id)
# 书籍与作者关系表
edit_obj.authors.set(authors_lists)
# 后端反向解析
_url = reverse('book_show')
# 后端重定向
return redirect(_url)
publish_queryset = models.Publish.objects.all()
author_queryset = models.Author.objects.all()
return render(request, 'edit_book.html', locals())
def delete_book(request, delete_id):
models.Book.objects.filter(pk=delete_id).delete()
_url = reverse('book_show')
return redirect(_url)
home.html文件
Title{# #}
{# #}
{% load static %}
{# #}
{#
book_show.py文件
{% extends 'home.html' %}
{% block content %}
序号书名价格出版社出版时间作者操作
{% for book_obj in book_queryset %}
{{ forloop.counter }}{{ book_obj.title }}{{ book_obj.price }}{{ book_obj.publish.name }}{{ book_obj.publish_date|date:'Y-m-d' }}{% for author_obj in book_obj.authors.all %}
{% if forloop.last %}
{{ author_obj.name }}
{% else %}
{{ author_obj.name }},
{% endif %}
{% endfor %}
{% endfor %}
{% endblock %}
add_book.py文件
{% extends 'home.html' %}
{% block content %}
新增图书
书名
价格
出版时间
出版社
{% for publish_obj in publish_queryset %}
{{ publish_obj.name }}
{% endfor %}
作者
{% for author_obj in author_queryset %}
{{ author_obj.name }}
{% endfor %}
{% endblock %}
edit_book.py文件
{% extends 'home.html' %}
{% block content %}
编辑图书
书名
价格
出版时间
出版社
{% for publish_obj in publish_queryset %}
{% if edit_obj.publish == publish_obj %}
{{ publish_obj.name }}
{% else %}
{{ publish_obj.name }}
{% endif %}
{% endfor %}
作者
{% for author_obj in author_queryset %}
{% if author_obj in edit_obj.authors.all %}
{{ author_obj.name }}
{% else %}
{{ author_obj.name }}
{% endif %}
{% endfor %}
{% endblock %}