python django前端重构_Django学习笔记(11)——开发图书管理页面

基础需求:75%

1. 列出图书列表、出版社列表、作者列表

2. 点击作者,会列出其出版的图书列表

3. 点击出版社,会列出旗下图书列表

4. 可以创建、修改、删除 图书、作者、出版社

升级需求:10%

1. 点击修改按钮,弹出模块框,模态框中展示该书的信息且信息可以修改,

2. 书名不可重复,不可修改

3. 修改图书信息时,使用ajax请求发送信息

三,编码规范需求:

编码规范需求:15%

1. 代码规范遵守pep8 (https://python.org/dev/peps/pep-0008/)

2. 函数有相应的注释

3. 程序有文档说明文件(README.md参考:https://github.com/csrftoken/vueDrfDemo)

4. 程序的说明文档必须包含的内容:程序的开发环境(django版本)、程序的实现的功能、程序的启动方式、登录用户信息、程序的运行效果

5. 程序设计的流程图:

(可以参考:https://www.processon.com/view/link/589eb841e4b0999184934329)

四,项目思路

首先做这个项目之前,推荐看一下我之前的博客:Django学习笔记(7):单表操作和多表操作,甚至有必要练习一遍。

其次,前期的基本操作,我在这里不再累赘,如果不会的话,可以参考我之前的博客:Django学习笔记(10)——Book单表的增删改查页面,当然,要是单表操作的增删改查都不会,我觉得先练习一遍没有坏处。

最后这里写一下此项目的思路。此项目就是对多表操作的再巩固。

4.1 创建模型

我们先来设定概念,字段和关系

作者模型 : 姓名 年龄

作者详细模型 : 生日 手机号码 家庭住址等等

出版商模型 : 出版商名称 所在城市 email

书籍模型 : 书名 出版日期

用户信息模型 :用户名 密码

(登录注册的用户信息)

(作者模型 和 作者详细模型 一对一关系 one - to - one)

(一本书可能会有多个作者, 一个作者也可以写多本书 )

( 作者 和 书籍 多对多的关系 many - to - many)

(一本书只应该由一个出版商出版)

( 出版商和书籍 一对多关联关系 one - to - many)

代码如下:

from django.db import models

# Create your models here.

# 出版社类

class Publish(models.Model):

id = models.AutoField(primary_key=True)

name = models.CharField(max_length=32)

def __str__(self):

return self.name

# 书类

class Book(models.Model):

id = models.AutoField(primary_key=True)

title = models.CharField(max_length=32)

publishDate = models.DateField()

price = models.DecimalField(max_digits=8, decimal_places=2)

# 书只能关联一个出版社,外键通常建立在多的那一边

publish = models.ForeignKey(to='Publish', on_delete=models.CASCADE)

# 多对多,作者和书是多对多的关系

books = models.ManyToManyField(to='Book', related_name='authors')

def __str__(self):

return self.title

# 作者类

class Author(models.Model):

nid = models.AutoField(primary_key=True)

name = models.CharField(max_length=32)

age = models.IntegerField()

# 作者和作者详细信息 是一对一的关系

authordetail = models.OneToOneField(to='AuthorDetail', null=True,

on_delete=models.CASCADE)

# 作者详细信息

class AuthorDetail(models.Model):

nid = models.AutoField(primary_key=True)

birthday = models.DateField()

telephone = models.BigIntegerField()

addr = models.CharField(max_length=64)

最后运行下面代码,生成数据表:

python manage.py makemigrations

python manage.py migrate

我们可以添加数据,我添加的数据如下:

insert into user1_authordetail values(1, '2019-11-12', '12345', 'boston');

insert into user1_authordetail values(2, '2014-11-12', '12312', 'houston');

insert into user1_authordetail values(3, '2013-11-12', '12432', 'ripcity');

insert into user1_author values(1, 'james', 34, 1);

insert into user1_author values(2, 'durant', 31, 2);

insert into user1_author values(3, 'curry', 30, 3);

insert into user1_publish values(1, '机械出版社');

insert into user1_publish values(2, '草堂出版社');

insert into user1_publish values(3, '人民出版社');

4.2 APP下的URL具体内容整理

1,注册

/register/

2,登录

/login/

3,注销

/logout/

4,图书列表

/book_list/

/add_book/

/update_book/101/

/del_book/

5,出版社列表

/publisher_list/

/add_publisher/

/update_publisher/101/

# 通过出版社,修改该书,之后返回出版社页面

/update_book/101/202/publisher/

/del_publisher/

# 通过出版社,查看该出版社的图书列表

/book_list/101/publisher/

# 通过出版社,增加该出版社的某本书

/add_book/101/publisher/

# 通过出版社,删除该出版社的某本书

/del_book/101/publisher/

6,作者列表

/author_list/

/add_author/

/update_author/101/

#通过作者,修改该书,之后返回作者页面

/update_book/101/21/author

/del_author

# 通过作者,查看该作者的图书列表

/book_list/101/author/

# 通过作者,增加该作者的某本书

/add_book/101/author/

# 通过作者,删除该作者的某本书

/del_book/101/author/

这里我们以book单表的增删改查页面为例,然后增加连表操作,因为作者模型和作者详细模型是一对一关系,而且书籍和作者是多对多的关系。我们这里以书籍&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值