• 老男孩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

    部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。 如需获取教程配套的资源文件和一对一专属答疑支持,请加vx:kangmf24联系作者。
  • 相关阅读:
    阅读笔记十四
    惨淡的蓝桥杯国赛经历
    阅读笔记十三
    阅读笔记十二
    阅读笔记十一
    阅读笔记十
    阅读笔记九
    阅读笔记八
    阅读笔记七
    阅读笔记六
  • 原文地址:https://www.cnblogs.com/MarlonKang/p/15530685.html
Copyright © 2020-2023  润新知