当前位置: 首页 > news >正文

Django项目实战-图书管理系统之项目搭建

Django项目实战-图书管理系统之项目搭建

一、项目开发步骤分析

  1. 创建虚拟环境
  2. 安装 django
  3. 创建工程项目
  4. 创建应用
  5. 修改配置文件
  6. 根据应用需求创建数据模型并进行数据迁移
  7. 创建路由与视图函数
  8. 引入模版文件
  9. 编辑路由、视图函数与模板文件
  10. 项目调试
  11. 重复步骤7、8、9、10新增功能

二、具体实现

  • 1> 创建虚拟环境
  • 2> 安装 django
  • pip install django==3.2

  • 3> 创建工程项目
    django-admin startproject kylin_bookstore

  • 4> 创建应用
    python manage.py startapp users
    python manage.py startapp books

  • 5> 修改配置文件
    • 修改工程配置文件 setting.py

      import os
      ​
      # 允许访问的主机
      ALLOWED_HOSTS = ['*']
      ​
      # 注册应用
      INSTALLED_APPS = [...'users.apps.UsersConfig','books.apps.BooksConfig',
      ]
      ​
      # 添加模板文件和自定义标签和过滤器到模板库文件
      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',],},},
      ]
      ​
      # 配置数据库(这里我们与上一个工程项目使用同一个用户)
      DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1','PORT': 5000,'USER': 'django','PASSWORD': 'django','NAME': 'book_manage'}
      }
      ​
      # 语言
      LANGUAGE_CODE = 'zh-hans'
      ​
      # 时区
      TIME_ZONE = 'Asia/Shanghai'
      # 禁用 Django 的时区转换功能, 使用系统默认的时区
      USE_TZ = False
      ​
      # 配置静态文件
      STATIC_URL = '/static/'
      STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static_files'),
      ]
      工程同名子目录的__init__.py 配置mysqlfrom pymysql import install_as_MySQLdb
      ​
      install_as_MySQLdb()

  • 6> 根据应用需求创建数据模型并进行数据迁移
    • 使用管理员账户为项目创建一个数据库 book_manage 存放项目数据

      create database book_manage default charset=utf8;

    • 为数据库管理账户授权

      # 授权book_manage数据库下的所有表(book_manage.*)的所有权限(all)给用户django在以任何ip访问数据库('django'@'%')
      grant all on book_manage.* to 'django'@'%'; 
      ​
      # 刷新生效用户权限
      flush privileges;

    • users 应用 文件夹下的 models.py 文件中定义 User 模型类。

      from django.db import models
      ​
      ​
      # Create your models here.
      class User(models.Model):GENDER_CHOICES = ((0, 'male'),(1, 'female'))username = models.CharField(max_length=20, verbose_name='用户名')password = models.CharField(max_length=20)gender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name='性别')email = models.CharField(max_length=20, null=True, verbose_name='邮箱')create_datetime = models.DateTimeField(auto_now_add=True, verbose_name='添加时间')update_datetime = models.DateTimeField(auto_now=True, verbose_name='修改时间')is_admin = models.BooleanField(default=False, verbose_name='是否为管理员')is_active = models.BooleanField(default=False, verbose_name='激活状态')
      ​class Meta:db_table = 'tb_user'verbose_name = '用户'verbose_name_plural = verbose_name
      ​def __str__(self):return self.username
      在 books 应用 文件夹下的 models.py 文件中定义 BookInfo 模型类。from django.db import models
      ​
      ​
      # 定义图书模型类BookInfo
      class BookInfo(models.Model):book_name = models.CharField(max_length=20, verbose_name='书名')author = models.CharField(max_length=20, verbose_name='作者')publisher = models.CharField(max_length=20, verbose_name='出版社')create_datetime = models.DateTimeField(auto_now_add=True, verbose_name='添加时间')update_datetime = models.DateTimeField(auto_now=True, verbose_name='修改时间')is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')
      ​class Meta:db_table = 'tb_books'verbose_name = '图书'verbose_name_plural = verbose_name
      ​def __str__(self):return self.book_name
      ​
      ​
      生成迁移文件并同步到数据库中# 生成迁移文件
      python manage.py makemigrations
      ​
      # 同步到数据库中
      python manage.py migrate

  • 7> 创建路由与视图函数
    • 创建路由

      • 编辑主路由

        from django.contrib import admin
        from django.urls import path, include
        ​
        urlpatterns = [path('admin/', admin.site.urls),
        ​# 用户登录与注册path(r'', include("users.urls")),
        ​# 书籍管理path(r'books/', include("books.urls")),
        ]
        创建并编辑users应用路由from django.urls import re_path
        from . import views
        ​
        urlpatterns = [# 用户登录re_path(r'^login$', views.login),# 用户注册re_path(r'^register$', views.register)
        ]
        创建books应用路由(具体路由映射关系后续根据业务补充)from django.contrib import admin
        from django.urls import path, include
        ​
        urlpatterns = []
        在users应用中编辑视图函数from django.shortcuts import render
        from django.http import HttpResponse
        ​
        ​
        # 登录的视图函数
        def login(request):return HttpResponse("这里是登录视图")
        ​
        ​
        # 注册的视图函数
        def register(request):return HttpResponse("这里是注册视图")

    • API测试

      登录API: http://127.0.0.1:8080/login
      注册API: http://127.0.0.1:8080/register


http://www.mrgr.cn/news/56280.html

相关文章:

  • Electron入门笔记
  • HarmonyOS Next模拟器异常问题及解决方法
  • Elasticsearch 在linux部署 及 Docker 集群部署详解案例示范
  • ros2 action server示例、拓展、练习
  • Redis 高可用:从主从到集群的全面解析
  • 每月洞察:App Store 和 Google Play 的主要更新
  • OBOO鸥柏:引领液晶拼接大屏kvm集中控制系统的技术革新
  • 持续优化之路:Envoia许可证管理的轻松进阶
  • URL、URN和URI的区别
  • GJB438C-2021《软件需求规格说明》的一处修订
  • APIJSON 为零代码提供了新的思路
  • Python 应用可观测重磅上线:解决 LLM 应用落地的“最后一公里”问题
  • LeetCode 1750.删除字符串两端相同字符后的最短长度
  • 3.1.1ReactOS系统中搜索给定长度的空间地址区间函数的实现
  • 深度学习:Yolo系列 V1和V2的对比
  • Point2CAD: Reverse Engineering CAD Models from 3D Point Clouds 论文阅读
  • 【C++】用哈希桶模拟实现unordered_set和unordered_map
  • 【大模型】一个简单程序看透 RAG 的核心原理,理解优化 RAG 的关键要点
  • Redission分布式锁详解
  • YOLO目标检测理论详解,YOLOv1理论知识讲解,超w字精读(学习YOLO框架必备),全网最详细教程
  • 嵌入式 MCU 编程提速秘籍 —— 让你的程序飞起来!
  • 书生实战营第四期-第一关Linux+InternStudio
  • 肉桂酰辅酶A还原酶Cinnamoyl-CoA Reductases(CCR)表征及晶体-文献精读70
  • 0基础学java之Day12
  • 二分查找_在排序数组中查找元素的第一个和最后一个位置
  • 超详细JDK安装+环境配置教程