zoukankan      html  css  js  c++  java
  • django图书管理系统实例

    首页,其他页面全部继承首页的上半部分

    点击发布图书页面

    首页点击书名,跳转到图书信息界面,该界面可删除图书

    项目结构

    #views.py
    from django.shortcuts import render,redirect,reverse
    from django.db import connection
    def get_cursor():
        return connection.cursor()
    
    def index(request):  #首页
        cursor=get_cursor()
        cursor.execute("select * from book")
        books=cursor.fetchall()
        return render(request,'index.html',context={"books":books})
    
    def add_book(request):#发布图书
        if request.method == 'GET':
            return render(request,'add_book.html')
        else:
            name = request.POST.get('name')
            author = request.POST.get('author')
            cursor=get_cursor()
            cursor.execute("insert into book values(null,'%s','%s')"%(name,author))
            return redirect(reverse('index'))#发布图书完成后跳转到首页
    
    def book_detail(request,book_id):
        cursor=get_cursor()
        cursor.execute("select * from book where id=%s"%book_id)
        book=cursor.fetchone()
        return render(request,'book_detail.html',context={"book":book})
    
    def delete_book(request):#删除图书
        if request.method=='POST':
            book_id=request.POST.get('book_id')
            cursor=get_cursor()
            cursor.execute("delete from book where id=%s"%book_id)
            return redirect(reverse('index'))#删除图书后跳转到首页
        else:
            raise RuntimeError("删除图书的method错误!")
    urls.pyfrom front import views
    urlpatterns = [
        path('', views.index,name='index'),
        path('add_book/',views.add_book,name='add_book'),
        path('book_detail/<int:book_id>',views.book_detail,name='book_detail'),
        path('delete_book',views.delete_book,name='delete_book')
    ]

    项目静态文件index.css

    *{margin:0;
      padding:0;
    }
    .nav {
        background: #3a3a3a;
        height: 65px;
        overflow: hidden
    }
    .nav li{
        float:left;
        list-style: none;
        margin: 0 20px;
        line-height: 65px;
    }
    .nav li a{
        color: #fff;
        text-decoration: none
    }

    模板html,其他模板均继承这个模板

    {% load  static %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>首页</title>
        <link rel="stylesheet" href="{% static 'base.css' %}">
    </head>
    <body>
    <nav>
        <ul class="nav">
             <li><a href="/">首页</a></li>
             <li><a href="{% url 'add_book' %}">发布图书</a></li>
        </ul>
    </nav>
    {% block content %}
    
    {% endblock %}
    </body>
    </html>

    首页模板

    {% extends 'base.html' %}
    {% block content %}
    <table>
    <thead>
        <tr>
            <th>序号</th>
            <th>书名</th>
            <th>作者</th>
        </tr>
    </thead>
    <tbody>
        {% for book in books %}
            <tr>
                <td>{{ forloop.counter }}</td>
                <td><a href="{% url 'book_detail' book_id=book.0 %}">{{ book.1 }}</a></td>
                <td>{{ book.2 }}</td>
            </tr>
        {% endfor %}
    </tbody>
    </table>
    {% endblock %}

    发布图书模板

    {% extends 'base.html' %}
    {% block content %}
        <form action="" method="post">
            <table>
                <tbody>
                    <tr>
                      <td>书名:</td>
                      <td><input type="text" name='name'></td>
                    </tr>
                    <tr>
                      <td>作者:</td>
                      <td><input type="text" name='author'></td>
                    </tr>
                    <tr>
                      <td></td>
                      <td><input type="submit" value='提交'></td>
                    </tr>
                </tbody>
            </table>
        </form>
    {% endblock %}

     图书详情模板,该模板可删除图书

    {% extends 'base.html' %}
    {% block content %}
    <p>书名:{{ book.1 }}</p>
    <p>作者:{{ book.2 }}</p>
        <form action="{% url 'delete_book' %}" method="post">
            <input type="hidden" name="book_id" value="{{ book.0 }}">
            <input type="submit" value="删除图书">
        </form>
    {% endblock %}
  • 相关阅读:
    stm32f103和stm32f407的GPIO口模式设置以及相互对应的关系
    基于STM32单片机实现屏幕休眠后OLED屏幕滚动效果
    基于51单片机的超声波模块HC-SR04的使用
    用51单片机控制L298N电机驱动模块
    学习笔记——51单片机 单片机与单片机之间的通讯
    基于51单片机的电子密码锁—1
    LCD1602学习调试
    基于51单片机,通过定时器实现的时钟程序
    有进度条圆周率计算
    python turtle 学习笔记
  • 原文地址:https://www.cnblogs.com/Forever77/p/10145662.html
Copyright © 2011-2022 走看看