Django框架(6) —— 图书显示案例

编码之前的准备工作:

  1. 设计出访问页面的url和对应的视图函数的名字,确定视图函数的功能
  2. 设计模板文件的名字

以下为案例中的简单设计过程:

1、完成图书信息的展示

  • 设计url,通过浏览器访问 http://127.0.0.1:8000/books,显示图书信息
  • 设计url对应的视图函数show_books,查询出所有图书的信息,将这些信息传递给模板文件
  • 编写模板文件show_books.html,遍历显示出每一本图书的信息。

2、完成点击某本图书时,显示出图书里所有英雄信息的页面

  • 设计url,通过访问http://127.0.0.1:8000/数字,显示对应的英雄信息页面,这里数字指点击的图书的id
  • 设计对应的视图函数detail,接收图书的id,根据id查询出相应的图书信息,然后查询出图书中的所有英雄信息
  • 编写模板文件detail.html

示例代码:

booktest/urls.py

# -*- coding: utf-8 -*-
from django.conf.urls import url
from booktest import views

urlpatterns = [
    url(r'^books$', views.show_books),  # 显示图书信息
    url(r'^books/(\d+)$', views.hero_detail)  # 显示英雄信息
]

booktest/views.py

from django.shortcuts import render
from booktest.models import BookInfo, HeroInfo


def show_books(request):
    """显示图书的信息"""
    # 1、通过M查找图书表中的数据
    book_list = BookInfo.objects.all()
    # 2、使用模版
    return render(request, 'booktest/show_books.html', {"book_list": book_list})


def hero_detail(request, b_id):
    """查询图书关联的英雄信息"""
    # 1,根据b_id查询图书信息
    book = BookInfo.objects.get(id=b_id)
    # 2, 查询和book关联的英雄信息
    hero_list = book.heroinfo_set.all()
    # 3, 使用模版
    return render(request, 'booktest/hero_detail.html', {'hero_list': hero_list, 'book': book})

templates/booktest/show_books.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>显示图书信息</title>
</head>
<body>
图书信息如下:
<ul>
    {#遍历图书列表#}
    {% for book in book_list %}

        <li>
            {#输出图书名称,并设置超链接,链接地址是一个数字#}
            <a href="books/{{ book.id }}">{{ book.b_title }}</a>
        </li>
    {% endfor %}
</ul>
</body>
</html>

templates/booktest/hero_detail.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>显示图书关联的英雄信息</title>
</head>
<body>
{#输出图书标题#}
<h1>{{ book.b_title }}</h1>
英雄信息如下:<br>
<ul>
    {#遍历英雄并显示#}
    {% for hero in hero_list %}
        <li>
            {{ hero.h_name }} ------ {{ hero.h_comment }}
        </li>
    {% empty %}
        没有英雄信息
    {% endfor %}
</body>
</html>

 

效果展示

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轨迹|

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值