day60
day60-002 出版社列表页面
一、需求分析:
图书管理系统之 出版社的增删改查
1) RDBS表结构设计
1. 出版社
id name
2. 作者
id name
3. 书
id title 出版社_id
4. 作者_书_关系表
id 书_id 作者_id
2)定义实体类
在项目子应用模块/models.py 里定义实体类(models.Model):
点击查看代码
# -*- coding:utf-8 -*-
from django.db import models
# Create your models here.
class User(models.Model):
id = models.AutoField(primary_key=True) # -> 创建一个自增的ID列作为主键
email = models.CharField(max_length=24) # -> varchar(32)
pwd = models.CharField(max_length=16) # -> varchar(32)
# 出版社表-实体类
class Press(models.Model):
id = models.AutoField(primary_key=True) # -> 创建一个自增的ID列作为主键
name = models.CharField(max_length=24) # -> varchar(24)
def __str__(self):
return self.name
然后执行Django框架的数据库更新并创建表的命令行:
python manage.py makemigrations
python manage.py migrate
使用Navicat连接数据库查看数据库mysite中会已经创建好2张table ;
发现database的编码字符集不符合设计的要求,需要手动调整成uft8 ;
(使用root账号登录进入mysql命令行客户端)
alter table app01_user character set utf8;
参考资料:https://www.cnblogs.com/wsk312138147/p/9469285.html
在表中导入初始测试数据。
3) 查询数据库表的所有对象
urls.py 追加请求路径 和“请求处理方法”的名称
urlpatterns = [
url(r'^login/$', views.login),
url(r'^press_list/$',views.press_list)
# url(r'^index/$', index),
]
“请求处理方法”的方法体
def press_list(request):
# 1. 去数据库查所有的出版社
ret = Press.objects.all()
print(ret)
# 2. 在HTML页面上展示出来
return render(request, 'press_list.html', {'ret': ret })
创建匹配请求路径的html页面文件
press_list.html
点击查看代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="content-Type" charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>出版社列表页面</title>
</head>
<body>
<h1>出版社列表</h1>
{#<a href="/add_press/">添加出版社</a>#}
<table border="1">
<thead>
<tr>
{# <th>序号</th>#}
<th>出版社id</th>
<th>名称</th>
{# <th>操作</th>#}
</tr>
</thead>
<tbody>
{% for i in ret %}
<tr>
{# <td>{{ forloop.counter }}</td>#}
<td>{{ i.id }}</td>
<td>{{ i.name }}</td>
{# <td>#}
{# <a href="/delete_press/?id={{ i.id }}">删除</a>#}
{# <a href="/edit_press/?id={{ i.id }}">编辑</a>#}
{# </td>#}
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
day60-003 添加出版社
add_press.html
点击查看代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="content-Type" charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>添加出版社</title>
</head>
<body>
<form action="/add_press/" method="post">
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
views.py 请求处理的方法
def add_press(request):
if request.method == 'POST':
# 表示用户填写完了,要给我发数据
# 1. 取到用户填写的出版社数据
press_name = request.POST.get('name')
# 2. 将数据添加到数据库中
Press.objects.create(name = press_name)
# 3. 跳转到出版社列表页面
return redirect('/press_list/')
# 返回一个添加页面,让用户在上面填写新的出版社的信息
return render(request, 'add_press.html')
启动项目命令
python manage.py runserver 127.0.0.1:8000