一个简单的图书管理系统

#连接mysql数据库:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'homework',# 要连接的数据库,连接前需要创建好
        'USER':'root',# 连接数据库的用户名
        'PASSWORD':'123', # 连接数据库的密码
        'HOST':'127.0.0.1', # 连接主机,默认本级
        'PORT':3306, #  端口 默认3306
        'OPTIONS':{
            'init_command':'set sql_mode="STRICT_TRANS_TABLES"'  #配置严格模式
        }
    }
}



#静态文件
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'statics')
]
from django.conf.urls import url
from django.contrib import admin
from zuoye02 import views



urlpatterns = [
    # url(r'^admin/', admin.site.urls),
    url(r'^show_books',views.show_books,name='show_books'),
    url(r'^add_books',views.add_books,name='add_books'),
    url(r'^del_books/(\d+)',views.del_books,name='del_books'),
    url(r'^edit_books/(\d+)',views.edit_books,name='edit_books'),
]
from django.shortcuts import render,HttpResponse,redirect
from zuoye02 import models  #引入数据库数据  标准库的放上面,第三方库的放下面,引入自己项目系统中的文件放最下面
from django.urls import reverse
# Create your views here.
# 1、反向解析
# 2、for循环
# 3、静态文件
# 4、urls 问什么加name = show_books / add_books   避免路径写死
# 5、过滤器
# 6、{% csrf_token %} 用法
# 7、from Django.urls import reverse
# 8、提交数据 用from表单    action 指定路径
def show_books(request):
    if request.method == 'GET':
        #在前端显示内容
        all_books_objs = models.Book.objects.all()  #all_books_objs 所有的model对象
        return render(request,'show_books.html',{'all_books_objs':all_books_objs})  #render 字符串替换,展示所有


def add_books(request):
    if request.method == 'GET':

        return render(request,'add_books.html')
    else:
        # name = request.POST.get('name')
        # price = request.POST.get('price')
        # date = request.POST.get('date')
        # publisher = request.POST.get('publisher')



        # 向后端传入保存数据,是一种方法,还有另一种,关键字传参可以打散
        # models.Book.objects.create(
        #     name=name,
        #     price=price,
        #     date=date,
        #     publisher=publisher
        # )

        #打散传数据
        book_info_dict = request.POST.dict()
        # print(book_info_dict)
        del book_info_dict['csrfmiddlewaretoken']
        models.Book.objects.create(**book_info_dict)

        #创建完数据返回show_books

        return redirect(reverse('show_books'))

def del_books(request,n):

    models.Book.objects.filter(pk=n).delete()

    return redirect('show_books')

def edit_books(request,n):
    old_obj = models.Book.objects.get(pk=n)

    return render(request,'edit_books.html',{'old_obj':old_obj})
from django.db import models

# Create your models here.


class Book(models.Model):
    #配置属性 , ID 不写默认创建
    name = models.CharField(max_length=32)
    price = models.FloatField()
    date = models.DateField()
    publisher = models.CharField(max_length=32)
    modify_time = models.DateTimeField(auto_now=True)
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
</head>
<body>
{#布局容器#}
<div class="container-fluid">
    <h1>查看书籍</h1>
{#    栅格系统#}
    <div class="row">
        <div class="col-md-6 col-md-offset-3">
            <div>
                <a href="{% url 'add_books' %}" class="btn btn-primary">添加书籍</a>
            </div>
            <table class="table table-hover table-bordered table-striped">
                <thead>
                    <tr>
                        <th>编号</th>
                        <th>书籍名称</th>
                        <th>价格</th>
                        <th>出版日期</th>
                        <th>出版社</th>
                        <th>操作</th>
                    </tr>
                </thead>
                <tbody>
{#                    <tr>#}
{#有多少行并不知道,是后端返回给前端的,所以不能像以前那样写死,用for循环写。#}
{#                        <td></td>#}
{#                    </tr>#}
                    {% for all_books_obj in all_books_objs %}
                        <tr>
                            <td>{{ forloop.counter }}</td>
                            <td>{{ all_books_obj.name }}</td>
                            <td>{{ all_books_obj.price }}</td>
                            <td>{{ all_books_obj.date|date:'Y-m-d' }}</td>
                            <td>{{ all_books_obj.publisher }}</td>
                            <td>
                                <a href="{% url 'edit_books' all_books_obj.pk %}" class="btn btn-warning">编辑</a>
{#                                <a href="del_book/{{ all_books_obj.pk }}" class="btn btn-danger">删除</a>#}
                                <a href="{% url 'del_books' all_books_obj.pk %} " class="btn btn-danger">删除</a>
                            </td>
                        </tr>
                    {% endfor %}
                    
                </tbody>
            </table>
        </div>
    </div>
</div>









    <script src="{% static 'jquery-3.4.1.js' %}"></script>
    <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
<script>

</script>
</body>
</html>
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加书籍</title>
    <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
</head>
<body>
<div class="container-fluid col-lg-6">
    <h2>添加书籍</h2>
    <div class="row">
          <div class="col-lg-6 pull-right">
              <form action="{% url 'add_books' %}" method="post">
                  {% csrf_token %}
              <div class="form-group">
                <label for="exampleInputname">书籍名称</label>
                <input type="text" class="form-control" id="exampleInputname" placeholder="书籍名称" name="name">
              </div>
              <div class="form-group">
                <label for="exampleInputprice">价格</label>
                <input type="text" class="form-control" id="exampleInputprice" placeholder="价格" name="price">
              </div>
                <div class="form-group">
                <label for="exampleInputtime">出版时间</label>
                <input type="date" class="form-control" id="exampleInputtime" placeholder="出版时间" name="date">
              </div>
                <div class="form-group">
                <label for="exampleInputshe">出版社</label>
                <input type="text" class="form-control" id="exampleInputshe" placeholder="出版社" name="publisher">
              </div>
              <div class="pull-right">
                  <button type="submit" class="btn btn-success">Submit</button>
              </div>

          </form>
      </div>
  </div>

</div>
<script src="{% static 'jquery-3.4.1.js' %}"></script>
<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
<script>

</script>
</body>
</html>
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>编辑书籍</title>
    <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
</head>
<body>
<div class="container-fluid col-lg-6">
    <h2>添加书籍</h2>
    <div class="row">
          <div class="col-lg-6 pull-right">
              <form action="{% url 'add_books' %}" method="post">
                  {% csrf_token %}
              <div class="form-group">
                <label for="exampleInputname">书籍名称</label>
                <input type="text" class="form-control" id="exampleInputname" placeholder="书籍名称" name="name" value="{{ old_obj.name }}">
              </div>
              <div class="form-group">
                <label for="exampleInputprice">价格</label>
                <input type="text" class="form-control" id="exampleInputprice" placeholder="价格" name="price" value="{{ old_obj.price }}">
              </div>
                <div class="form-group">
                <label for="exampleInputtime">出版时间</label>
                <input type="date" class="form-control" id="exampleInputtime" placeholder="出版时间" name="date" value="{{ old_obj.date|date:'Y-m-d' }}">
              </div>
                <div class="form-group">
                <label for="exampleInputshe">出版社</label>
                <input type="text" class="form-control" id="exampleInputshe" placeholder="出版社" name="publisher" value="{{ old_obj.publisher }}">
              </div>
              <div class="pull-right">
                  <button type="submit" class="btn btn-success">Submit</button>
              </div>

          </form>
      </div>
  </div>

</div>
<script src="{% static 'jquery-3.4.1.js' %}"></script>
<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
<script>

</script>
</body>
</html>

注意时区的区别。需要在setting里设置。

posted @ 2019-05-24 21:17  求知若渴,虚心若愚  阅读(64)  评论(0)    收藏  举报