Django案例——图书管理案例


项目代码连接见:链接:https://pan.baidu.com/s/1mRYMVZkpLdRoqVLbqy8Wkw
提取码:1w25

项目开始前

  1. 首先在虚拟机中创建django环境
 mkvirtualenv -p /usr/bin/python3 books

2.在创建好的环境中安装django框架和pymysql

pip install django==3.2 -i https://pypi.douban.com/simple
pip install pymysql -i https://pypi.douban.com/simple

3.安装下载完成后,使用pycharm连接远程环境,具体操作见本人之前的blog。
4. 将主目录中的settings.py文件修改ALLOWED_HOSTS = [‘*’]。
5. 依次建立templates文件存放html文件,static文件存档css,img和js文件,本文的前端页面在上方文件连接中,这里不一一赘述。
在这里插入图片描述
6.建立好上述文件后,修改settings中的文件。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]

App的建立和路由分配

  1. 新建app,使用命令python manage.py startapp book_admin,同时注册app至settings中。
  2. 在新建的app中新建路由文件,并在主路由中分配子路由。
    主路由books/urls.py
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('book/',include('book_admin.urls'))
]

子路由book_admin/urls.py,具有增删改查的功能

from django.urls import path,include
from . import views

urlpatterns = [
    path('index/',views.index),
    path('add/',views.add,name = 'add'),
    path('list/',views.list,name='list'), #这里的name = 'list'对应的是views中的render中的页面跳转
    path('update/<id>',views.update,name = 'update'),
    path('delete/<id>',views.delete,name = 'delete'),
]

数据库的建立与连接

1.为了将前端获取的数据传至后台并进行保存,依次在虚拟机中进行数据库的建立和连接。
2. 在虚拟机依次输入以下的命令进行数据库的创建。

mysql -uadmin -p
create database `Books`
  1. 将主目录中的settiings中的数据库相关信息进行修改,如下所示:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'Books',
        'USER':'admin',
        'PASSWORD':'qwe123',
        'HOST':'127.0.0.1',
        'PORT':3306,
    }
}

模型映射(建立表格)

  1. 根据前端页面建立相应的表格存储数据,其中Meta函数是可以自定义表格名字。在新建的app中的models.py文件中写入下方代码:
from django.db import models

# Create your models here.
class Books(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=50) #标题
    name = models.CharField(max_length=30) #作者
    age = models.IntegerField(default=20)  # 出版时间
    price = models.DecimalField(max_digits=8,decimal_places=2) #价格,位数为八位,小数点保留两位
    publish = models.CharField(max_length=30) #出版社
    pub_date = models.DateField() #上传时间

    #自定义表的名字
    class Meta:
        db_table = 'Books'

    def __str__(self):
        return f'id = {self.id},title = {self.title},name = {self.name},age = {self.age},price = {self.price},publish = {self.publish},pub_date = {self.pub_date}'

  1. 完成上述代码按照下方命令进行模型映射。
makemigration
migrate
  1. 通过数据库查看建表是否成功。
mysql> show tables;
+----------------------------+
| Tables_in_Books            |
+----------------------------+
| Books                      |
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
+----------------------------+
11 rows in set (0.00 sec)

mysql> desc Books;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int          | NO   | PRI | NULL    | auto_increment |
| title    | varchar(50)  | NO   |     | NULL    |                |
| name     | varchar(30)  | NO   |     | NULL    |                |
| age      | int          | NO   |     | NULL    |                |
| price    | decimal(8,2) | NO   |     | NULL    |                |
| publish  | varchar(30)  | NO   |     | NULL    |                |
| pub_date | date         | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

视图函数

本文图书管理实现的功能包括增删改查。

from django.shortcuts import render,reverse,redirect
from django.http import HttpResponse
# Create your views here.
#主页的访问,可以加上登录界面进行访问
from book_admin.models import Books


def index(request):
    return render(request,'book_admin/index.html')

def add(request):
    if request.method == 'GET':
        return render(request,'book_admin/add.html')
    elif request.method == 'POST':
        #从模板获取数据
        title = request.POST.get('title')
        name = request.POST.get('name')
        price = request.POST.get('price')
        publish = request.POST.get('publish')
        date = request.POST.get('date')
        #存储数据到数据库
        Books.objects.create(title = title,name=name,price=price,publish=publish,pub_date=date)
        # return render(request,'book_admin/list.html')
        return redirect(reverse('list')) #页面的重定向

def list(request):
    BK = Books.objects.all()
    # return render(request,'book_admin/list.html',locals())
    return render(request,'book_admin/list.html',locals())  #将数据库中的数据传递到前端页面

def update(request,id):
    if request.method == 'POST':
        title = request.POST.get('title')
        name = request.POST.get('name')
        price = request.POST.get('price')
        publish = request.POST.get('publish')
        date = request.POST.get('date')
        Books.objects.filter(id = id).update(title = title,name=name,price=price,publish=publish,pub_date=date)
        return redirect(reverse('list'))

    #在编辑页面展示需要修改的数据
    BK = Books.objects.get(id = id)
    return render(request,'book_admin/update.html',locals())  #将数据库中的数据传递到前端页面

def delete(request,id):
    Books.objects.get(id=id).delete()
    return redirect(reverse('list'))

最终的效果图

  1. 添加书籍的页面
    在这里插入图片描述
  2. 查询书籍的界面
    在这里插入图片描述
  3. 编辑书籍的界面
    在这里插入图片描述
  4. 删除页面
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kiwi.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值