本棚アプリケーションの作成【4-12 リンク設定】

ブラウザ上でページを遷移させていく

ここまで作成したアプリでは、ブラウザ上でリンクが作成されておらず、URLに直接入力するといった形で個別のURLをブラウザに直接打ち込んで画面を遷移させていました。これを解決するためにボタンをクリックすることによって画面を遷移する形にします。

bookproject/book/templates/book/book_list.html

<!doctype html>
<html lang="en">
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <!-- Bootstrap CSS -->
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/
bootstrap.min.css"
rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvK
uhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
crossorigin="anonymous">

        <title>本棚アプリ</title>
    </head>
    <body>
    {% extends 'base.html' %}

    {% block title %}書籍一覧{% endblock %}

    {% block content %}
        {% for item in object_list %}
        <div class="card">
            <h5 class="card-header">{{ item.title }}</h5>
            <div class="card-body">
                <p class="card-text">{{ item.text }}</p>
                <a href="#" class="btn btn-primary">Go somewhere</a>
                <h6 class="card-title">{{ item.category }}</h6>
            </div>
        </div>
        {% endfor %}
    {% endblock content %}
    </body>
</html>

<!doctype html>
<html lang="en">
    <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <!-- Bootstrap CSS -->
        <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/
bootstrap.min.css"
rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvK
uhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

        <title>本棚アプリ</title>
    </head>
    <body>
    {% extends 'base.html' %}

    {% block title %}書籍一覧{% endblock %}

    {% block content %}
        {% for item in object_list %}
        <div class="card">
            <h5 class="card-header">{{ item.title }}</h5>
            <div class="card-body">
                <p class="card-text">{{ item.text }}</p>
                <a href="{% url 'detail-book' item.pk %}"
class="btn btn-primary">詳細へ</a>
                <h6 class="card-title">{{ item.category }}</h6>
            </div>
        </div>
        {% endfor %}
    {% endblock content %}
    </body>
</html>

に編集

bookproject/book/templates/book/book_detail.html

{% extends 'base.html' %}

{% block title %}書籍詳細{% endblock %}

{% block content %}
    <div class="card">
        <h5 class="card-header">{{ object.title }}</h5>
        <div class="card-body">
            <p class="card-text">{{ object.text }}</p>
            <a href="#" class="btn btn-primary">ボタン</a>
            <h6 class="card-title">{{ object.category }}</h6>
        </div>
    </div>
{% endblock content %}

{% extends 'base.html' %}

{% block title %}書籍詳細{% endblock %}

{% block content %}
    <div class="card">
        <h5 class="card-header">{{ object.title }}</h5>
        <div class="card-body">
            <p class="card-text">{{ object.text }}</p>
            <a href="{% url 'list-book' %}" class="btn btn-primary">一覧へ</a>
            <a href="{% url 'update-book' object.pk %}"
class="btn btn-primary">編集する</a>
            <a href="{% url 'delete-book' object.pk %}"
class="btn btn-primary">削除する</a>
            <h6 class="card-title">{{ object.category }}</h6>
        </div>
    </div>
{% endblock content %}

に編集する

そしてサーバーを立ち上げてhttp://127.0.0.1:8000/book/1/detail/ にアクセスする

(venv) $ python manage.py runserver 

するとこのような画面になる