zoukankan      html  css  js  c++  java
  • Python

    在 book_list.html 的页面下方加上 “添加作者” 的链接

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>作者列表</title>
    </head>
    <body>
    
    <h1>作者列表</h1>
    
    <table border="1">
        <thead>
        <tr>
            <th>#</th>
            <th>id</th>
            <th>名字</th>
            <th>书籍</th>
        </tr>
        </thead>
        <tbody>
            {% for author in author_list %}
                <tr>
                <td>{{ forloop.counter }}</td>
                <td>{{ author.id }}</td>
                <td>{{ author.name }}</td>
                <td>
                    {% for book in author.book.all %}
                        {% if forloop.last %}
                            {{ book.title }}
                        {% else %}
                            {{ book.title }} |
                        {% endif %}
                    {% endfor %}
                </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
    
    <a href="/add_author/">添加书籍</a>
    
    </body>
    </html>
    

    运行效果:

    在 urls.py 处添加 “添加作者” 的 url 对应关系

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    
    urlpatterns = [
        # 出版社
        url(r'^publisher_list/', views.publisher_list),
        url(r'^add_publisher/', views.add_publisher),
        url(r'^del_publisher/', views.del_publisher),
        url(r'^edit_publisher/', views.edit_publisher),
        # 书籍
        url(r'^book_list/', views.book_list),
        url(r'^add_book/', views.add_book),
        url(r'^del_book/', views.del_book),
        url(r'^edit_book/', views.edit_book),
        # 作者
        url(r'^author_list/', views.author_list),
        url(r'^add_author/', views.add_author),
    ]
    

    创建 add_author.html 添加作者页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>添加作者</title>
    </head>
    <body>
    
    <h1>添加作者</h1>
    
    <form action="/add_author/" method="post">
        <p>
            作者姓名:<input type="text" name="author_name">
        </p>
    
        <p>
            书籍:
            <select multiple name="books">
                {% for book in book_list %}
                    <option value="{{ book.id }}">{{ book.title }}</option>
                {% endfor %}
            </select>
        </p>
    
        <p>
            <input type="submit" value="提交">
        </p>
    </form>
    
    </body>
    </html>
    

    最后在 views.py 加上添加作者的函数

    from django.shortcuts import render, redirect, HttpResponse
    from app01 import models
    
    
    # 展示出版社列表
    def publisher_list(request):
        pass
    
    
    # 添加新的出版社
    def add_publisher(request):
        pass
    
    
    # 删除出版社
    def del_publisher(request):
        pass
    
    
    # 编辑出版社
    def edit_publisher(request):
        pass
    
    
    # 展示书籍列表
    def book_list(request):
        pass
    
    
    # 添加书籍
    def add_book(request):
        pass
    
    
    # 删除书籍
    def del_book(request):
        pass
    
    
    # 编辑书籍
    def edit_book(request):
        pass
    
    
    # 作者列表
    def author_list(request):
        # 查询所有作者
        all_author = models.Author.objects.all()
        return render(request, "author_list.html", {"author_list": all_author})
    
    
    # 添加作者
    def add_author(request):
        if request.method == "post":
            # 取得提交的数据
            new_author_name = request.POST.get("author_name")
            # 如果提交的数据是多个值的话用 getlist
            books = request.POST.getlist("books")
            # 创建作者
            new_author_obj = models.Author.objects.create(name=new_author_name)
            # 把新作者和书籍建立对应关系,自动提交
            new_author_obj.book.set(books)
            # 跳转到作者列表页面,查看是否添加成功
            return redirect("/author_list/")
        # 查询所有的书籍
        all_books = models.Book.objects.all()
        return render(request, "add_author.html", {"book_list": all_books})
    

    运行结果:

    提交后

    再看一下数据库

  • 相关阅读:
    分析一个文本文件(英文文章)中各个词出现的频率,并且把频率最高的10个词打印出来
    求一个数组中的最大整数
    一个统计文本文件中各个英文单词出现频率的问题,并且输出频率最高的10个词
    Python学习一:基础语法
    Spring学习之二
    Spring学习之装配Bean
    Spring学习一
    缓存之ehcache
    解决axios传递参数后台无法接收问题
    服务端解决跨域问题
  • 原文地址:https://www.cnblogs.com/sch01ar/p/11240489.html
Copyright © 2011-2022 走看看