Django项目规划

  • 创建游戏管理项目

环境搭建

  • 操作系统 Windows10
  • 开发工具 Pycharm
$ python3 --version
Python 3.8.4
$ pip3 --version
pip 20.2.3 from d:\python\program\python38\lib\site-packages\pip (python 3.8)
$ django-admin --version
3.1.1

PIP安装Django

$ pip3 install django

创建项目

  • 使用django-admin项目管理工具创建Django项目
$ django-admin startproject gmws

环境配置

$ vim gamesite/setting.py

配置项目时区中国

USE_TZ = False
TIME_ZONE = "Asia/Shanghai"

配置语言为中文

LANGUAGE_CODE = "zh-hans"

配置MySQL数据库

  • 使用PIP安装pymysql模块,用于连接MySQL数据库。
$ pip3 install pymysql
  • 项目配置文件中配置默认(default)数据库连接选项以连接MySQL数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'NAME': 'game',
        'USER': 'root',
        'PASSWORD': 'root',
        'OPTIONS': {
            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"',
            'charset': 'utf8mb4'
        }
    }
}
  • 安装项目默认迁移文件生成项目必需的数据表
$ python3 manage.py migrate

项目规划

进入项目根目录

$ cd gmws

游戏管理项目日后会包含管理后台、官网、代理后台、对外接口等多个子项目,如何使用Django创建出多个子系统的项目工程呢?每个子系统作为一个应用app。对于多个应用为了便于管理维护,统一放置到项目根目录下的apps目录下,与此同时设置apps目录为Python的包package


Python是通过module(模块、功能块)来组织代码的,每个module就是一个Python文件,多个module则是由package包来进行组织的。如果当前目录下存在__init__.py文件则说明当前目录就是一个package包,这里会分为两种情况,没有内容的__init__.py和有内容的。

__init__.py文件的作用是完成package包的初始化,当一个package包被导入时__init.py初始化文件只会执行一次。初始化时首先会检查__init__.py文件中的变量,以确定当前package是否是一个subpackage子包,其次会检查当前package是否为一个module模块,最后才抛出ImportError导入错误的异常信息。


在项目根目录下创建apps目录,同时在apps目录下创建__init__.py文件以标识apps目录是一个Python包packageapps目录下将存放所有的应用。

$ mkdir apps
$ cd apps
$ touch __init__.py

如果使用PyCharm IDE则按如下操作

  1. 使用PyCharm在项目根目录下创建Python Package命名为apps
  2. 选中apps文件夹右键选择"Make Directory as Sources"

创建完apps包之后,项目默认时无法从此目录搜索模块的,因此需要将apps目录添加到Python模块导入的搜索路径os.sys.path环境路径下,这个路径相当于Windows系统中的环境变量path

$ vim settings.py
import os
import sys
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent.parent

# 将apps路径添加到Python导入模块的搜索路径下
sys.path.insert(0, os.path.join(BASE_DIR, "apps"))

创建应用

Django默认提供admin的Web应用,用于对数据表进行注册登录和表的增删改查操作。这里需要重新创建自己的后台管理应用,结合系统默认的admin应用提供的便捷工具辅助测试和开发。

进入项目根目录下使用startapp命令创建应用

$ cd gmws

创建应用并指定存放目录有两种方式

  1. 在项目根目录下使用python3 manage.py appstart manage命令创建manage应用后,拖拽到apps目录下。
$ python3 manage.py startapp manage
  1. 首先在apps目录下创建manage文件夹,然后在根目录下执行命令django-admin startapp manage apps/manage创建manage应用。
$ django-admin startapp manage apps/manage

注册应用

创建应用将会默认生成应用必须的文件,其中apps.py是应用专有配置文件,它具有一个name属性以标识当前项目的名称。

$ vim apps/manage/apps.py
from django.apps import AppConfig
# 应用配置
class ManageConfig(AppConfig):
    # 应用名称
    name = 'manage'

将当前应用注册到项目中时,会使用apps.manage.apps.ManageConfig路径查找到当前应用,将其添加到settings.py项目配置的INSTALLED_APPS选项中。

$ vim gamesite/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps.manage.apps.ManageConfig',
]

规划URL

项目创建完成后,首先需要注册到项目中,一个项目会包含多个应用。接下来需要将manage应用对应的路由做规划。计划后台使用http://127.0.0.1:8000/manage/module的方式访问。因此需要为manage应用设置主URL规则同时设置命名空间。

在项目的路由文件urls.py中添加manage应用的主路由规则

$ vim gmws/urls.py
from django.contrib import admin
from django.urls import path, include, re_path

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r"^manage/", include("apps.manage.urls", namespace="manage"))
]

这里re_path(r"^manage/", include("apps.manage.urls", namespace="manage"))使用正则匹配以manage开头的URL,将其引入到apps.manage.urls文件中,同时为其设置命名空间为manage

接下来进入到manage应用根目录下的urls.py路由文件中,首先要做的是为之前配置的namespace = "manage"声明app_name以产生关联。方便后续在模板和视图中使用反转解析时获取到对应视图。

$ vim apps/manage/urls.py
from django.urls import path, re_path

app_name = "manage"

urlpatterns = [
    
]

为什么要在项目urls.py中使用namespace,在应用的urls.py中使用app_name呢?

多个应用之间可能会产生同名的URL,为了避免反转解析URL时出现混淆,使用命名空间做区分。在项目主URL中使用时可采用实例命名空间,即在include函数中添加namespace即可。在应用中使用时需要在其URL中定义app_name变量。

规划MVT

由于manage将会涉及大量操作模块,将所有的视图编写在应用根目录下views.py根目录下是不太现实的,同时也不符合功能模块的单一功能原则。计划将每个功能模块作为一个独立的Python文件即module来实现,每个功能模块中在使用函数或类实现具体的功能点。

为此首先删除掉应用下的默认生成的视图文件,然后创建views文件夹。

$ rm -rf apps/manage/views.py
$ mkdir -p apps/manage/view

同理将应用默认的模型文件删除后建立models文件夹以存放模型。

$ rm -rf apps/manage/models.py
$ mkdir -p apps/manage/models

对于模板,默认Django存放在应用下的templates文件下,手工创建。

$ mkdir -p apps/manage/templates
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值