老男孩S16期的Django笔记(三)

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

 

posted @ 2021-11-09 20:05  Marlon康  阅读(53)  评论(0编辑  收藏  举报