zoukankan      html  css  js  c++  java
  • 图书管理系统简单版

    创建model 对象

    models.py   

    作者   作者详情    出版社     图书

    from django.db import models
    
    
    # Create your models here.
    
    class Author(models.Model):
        nid = models.AutoField(primary_key=True)
        name = models.CharField(max_length=32)
        age = models.IntegerField()
        authorDetail = models.OneToOneField("AuthorDetail")
    
        def __str__(self):
            return self.name
    
    
    class AuthorDetail(models.Model):
        nid = models.AutoField(primary_key=True)
        birthday = models.DateField()
        telephone = models.CharField(max_length=11)
        addr = models.CharField(max_length=64)
    
    
    class Publish(models.Model):
        nid = models.AutoField(primary_key=True)
        name = models.CharField(max_length=32)
        city = models.CharField(max_length=32)
        email = models.EmailField()
    
        def __str__(self):
            return self.name
    
    
    class Book(models.Model):
        nid = models.AutoField(primary_key=True)
        title = models.CharField(max_length=32)
        publishDate = models.DateField()
        publish = models.ForeignKey("Publish")
        authors = models.ManyToManyField("Author")
    
        def __str__(self):
            return self.title

    数据库创建一些数据 create_bluk

    import os
    
    if __name__ == '__main__':
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tushu.settings")
        import django
    
        django.setup()
        from app01 import models
        import random
    
        l1 = []
        for i in range(1, 101):
            obj = models.Book(
                title='哈哈%s' % i,
                # price=1+i,
                publishDate='2018-01-0%s' % (random.randint(1, 9)),
                publish_id=random.randint(1, 3),
            )
            l1.append(obj)
        models.Book.objects.bulk_create(l1)

    from.py 样式

    from django import forms
    from app01 import models
    
    
    class MyForm(forms.Form):
        title = forms.CharField(
            max_length=32,
            min_length=2,
            error_messages={
                "required": "内容不能为空",
                "min_length": "长度不能小于2位",
                "max_length": "长度不能大于32位",
            },
            label="书名",
        )
        publishDate = forms.DateField(
            label="出版日期",
            widget=forms.widgets.DateInput(attrs={"type": "date"})
        )
        publish = forms.ModelChoiceField(
            label="出版社",
            queryset=models.Publish.objects.all(),
            widget=forms.widgets.Select()
        )
        authors = forms.ModelMultipleChoiceField(
            label="作者",
            queryset=models.Author.objects.all(),
            widget=forms.widgets.SelectMultiple()
        )
    
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            for field in self.fields:
                self.fields[field].widget.attrs.update({
                    "class": "form-control",
                    # "error_messages": {
                    #     "required": "内容不能为空",
                    # },
                }
                )

    视图  view

    from django.shortcuts import render, HttpResponse, redirect
    
    # Create your views here.
    from app01 import models
    from form.form import MyForm
    from django.http import JsonResponse
    
    
    def show(request):
        all_books = models.Book.objects.all()
        return render(request, "show.html", {"all_books": all_books})
    
    
    def create_book(request):
        if request.method == "GET":
            form_obj = MyForm()
            return render(request, "create_book.html", {"form_obj": form_obj})
        else:
            data = request.POST
            form_obj = MyForm(data)
            if form_obj.is_valid():
                data = form_obj.cleaned_data
                author_data = data.pop('authors')
                book_obj = models.Book.objects.create(**data)
                book_obj.authors.add(*author_data)
                return redirect("show")
            else:
                return render(request, "create_book.html", {"form_obj": form_obj})
    
    
    def editor_book(request, n):
        book_obj = models.Book.objects.filter(pk=n)
        if request.method == "GET":
            book_obj = book_obj.first()
            all_publish = models.Publish.objects.all()
            all_authors = models.Author.objects.all()
            return render(request, 'editor_book.html',
                          {"n": n, "book_obj": book_obj, "all_publish": all_publish, "all_authors": all_authors})
    
        else:
            data = request.POST.dict()
            author_data = request.POST.getlist("authors")
            print(data, "++++++++++++++")
            print(author_data)
            # print(author_data['authors'],'----------------')
            del data["csrfmiddlewaretoken"]
            data.pop("authors")
            book_obj.update(**data)
            book_obj[0].authors.set(author_data)
            return redirect("show")
    
    
    def delete_book(request, n):
        models.Book.objects.filter(pk=n).delete()
        return redirect("show")
    
    
    def ajax_delete_book(request, n):
        data = {"status": False}
        if request.method == "POST":
            models.Book.objects.filter(pk=n).delete()
            data["status"] = True
            return JsonResponse(data)
        else:
            return JsonResponse(data)
    
    
        # try:
        #     data['status'] = 1
        #     models.Book.objects.filter(pk=n).delete()
        # except Exception:
        #     data['status'] = 2
        # return JsonResponse(data)

    html 页面

    show.html

    {% load static %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>show</title>
        <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
    </head>
    <body>
    <h1>书籍展示</h1>
    
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <a class="btn btn-primary" href="{% url 'create_book' %}">添加书籍</a>
                <table class="table table-bordered table-striped table-hover">
                    <thead>
                    <tr>
                        <th>序号</th>
                        <th>书名</th>
                        <th>出版日期</th>
                        <th>出版社</th>
                        <th>作者</th>
                        <th>操作</th>
                    </tr>
                    </thead>
                    <tbody>
                    {% for book in all_books %}
                        <tr>
                            <td>{{ forloop.counter }}</td>
                            <td>{{ book.title }}</td>
                            <td>{{ book.publishDate|date:"Y-m-d" }}</td>
                            <td>{{ book.publish.name }}</td>
                            <td>
                                {% for author in book.authors.all %}
                                    {{ author.name }}
                                    {% if forloop.last %}
                                    {% else %}
                                        ,
                                    {% endif %}
                                {% endfor %}
                            </td>
                            <td>
                                <a href="{% url 'editor_book' book.pk %}" class="btn btn-warning">编辑</a>
                                <a href="{% url 'delete_book' book.pk %} " class="btn btn-danger">删除</a>
                                <button class="btn btn-danger ajaxbtn">ajax删除</button>
                                <span class="hidden">{{ book.pk }}</span>
                            </td>
                        </tr>
                    {% endfor %}
                    </tbody>
                </table>
            </div>
        </div>
    </div>
    
    
    <script src="{% static 'js/jquery-3.4.1.js' %}"></script>
    <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
    
    <script>
        $("tbody").on("click", ".ajaxbtn", function () {
            ths = $(this);
            var deleteId = ths.next().text();
            $.ajax({
                url: "/ajax_delete_book/" + deleteId + "/",
                type: "post",
                data: {"csrfmiddlewaretoken": "{{ csrf_token }}"},
                success: function (data) {
                    ths.parent().parent().remove();
                    var tr_list = $('tbody').children();
                    $.each(tr_list, function (k, v) {
                        $(v).children().eq(0).text(k + 1);
                    })
                }
            })
        })
    
    </script>
    
    </body>
    </html>

    create_book.html

    {% load static %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>show</title>
        <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
    </head>
    <body>
    <h1>添加书籍</h1>
    
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                {#form表单#}
                <form action="{% url 'create_book' %}" method="post" novalidate>
                    {% csrf_token %}
                    {% for field in form_obj %}
                        <div class="form-group  {% if field.errors.0 %} has-error {% endif %} ">
    
                            <label for="{{ field.id_for_label }}">{{ field.label }}</label>
                            {{ field }}
                        <span class="text-danger">{{ field.errors.0 }}</span>
                        </div>
                    {% endfor %}
                    <input type="submit" class="btn btn-success pull-right" value="保存">
    
                </form>
    
    
            </div>
    
    
        </div>
    </div>
    
    
    <script src="{% static 'js/jquery-3.4.1.js' %}"></script>
    <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
    
    
    </body>
    </html>

    editor_book.html

    {% load static %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>show</title>
        <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
    </head>
    <body>
    <h1>添加书籍</h1>
    
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                {#form表单#}
                <form action="{% url 'create_book' %}" method="post" novalidate>
                    {% csrf_token %}
                    {% for field in form_obj %}
                        <div class="form-group  {% if field.errors.0 %} has-error {% endif %} ">
    
                            <label for="{{ field.id_for_label }}">{{ field.label }}</label>
                            {{ field }}
                        <span class="text-danger">{{ field.errors.0 }}</span>
                        </div>
                    {% endfor %}
                    <input type="submit" class="btn btn-success pull-right" value="保存">
    
                </form>
    
    
            </div>
    
    
        </div>
    </div>
    
    
    <script src="{% static 'js/jquery-3.4.1.js' %}"></script>
    <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
    
    
    </body>
    </html>

     

  • 相关阅读:
    lipo命令
    百度地图整合 手动
    Pos管理类库的第三方库
    css3实现各种渐变效果,比较适合做手机触屏版
    a标签加绝对定位在图片上面,a的链接和块状属性block失效,而且是所有IE版本都失效的
    一个好玩的jq+php实现转盘抽奖程序
    一个很简单的jQuery插件实例教程(菜鸟级)
    导航条固定在顶部
    网站上经常使用的第一次打开弹出广告特效
    一个超级简单php的留言板
  • 原文地址:https://www.cnblogs.com/XLHIT/p/11217137.html
Copyright © 2011-2022 走看看