Django项目实战-图书管理系统之项目搭建
一、项目开发步骤分析
- 创建虚拟环境
- 安装 django
- 创建工程项目
- 创建应用
- 修改配置文件
- 根据应用需求创建数据模型并进行数据迁移
- 创建路由与视图函数
- 引入模版文件
- 编辑路由、视图函数与模板文件
- 项目调试
- 重复步骤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.pyimport 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 配置mysql from 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 
 
-  










