上一篇[原创: 云服务器实战系列6] Python3 + Django + uwsgi + nginx + Mysql部署环境搭建&django应用初始化
以下所有操作, 都是在Window主机上. 当前使用的是window7 64位系统
django项目创建
安装virtualenv
(venv)James@James-PC MINGW64 /d/Projects/bt_django (master)$ pip install virtualenv --user
在bt_django(clone至本地的仓库)中创建独立的Python环境, 并命名为: venv
(venv)James@James-PC MINGW64 /d/Projects/bt_django (master)$ virtualenv --no-site-packages venv
进入至venv虚拟Python环境
当前使用的是git bash
(venv)James@James-PC MINGW64 /d/Projects/bt_django (master)$ source venv/Scripts/activate
在cmd命令行的话, 可用:
> venv/Scripts/activate.bat
安装依赖
(venv)James@James-PC MINGW64 /d/Projects/bt_django (master)$ pip install django djangorestframework mysqlclient
创建django工程mySite
(venv)James@James-PC MINGW64 /d/Projects/bt_django (master)$ django-admin startproject mySite
settings.py
因为使用的是mysql数据库, 需要修改默认数据库相关的配置如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库类型
'NAME': 'test', # 项目数据库名称
'HOST': '120.1.1.1', # 数据库地址
'PORT': '3306', # 端口号
'USER': 'test', # 数据库用户名
'PASSWORD': 'test', # 数据库密码
}
}
若数据库没有创建db库和用于测试帐户, 可按如下步骤操作:
添加DB
mysql> CREATE DATABASE IF NOT EXISTS dbName DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
添加用户并授权可访问dbName库的所有表
mysql> grant all privileges on dbName.* to test@'%' identified by 'test';
Query OK, 0 rows affected
mysql> flush privileges;
Query OK, 0 rows affected
mysql>
至此, django项目已完成初始化和相关配置, 可以在本地试运行了.
运行本地django项目
进入到虚拟的python环境
(venv)James@James-PC MINGW64 /d/Projects/bt_django (master)$ source venv/Scripts/activate
运行django本地开发服务器
进入到mySite目录下, 并执行python manage.py runserver
(venv) D:\Projects\bt_django\mySite>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
November 14, 2019 - 20:43:19
Django version 2.2.7, using settings 'mySite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
验证
访问http://127.0.0.1:8000/, 即可看到, 我们的本地django应用已经运行起来了.

创建app
这里会创建一个在线考试系统, 因此命名为: online_exam_system
$ python manage.py startapp online_exam_system
命令执行后, 会在mySite目录下生成以下文件:

编写第一个视图
- 在
online_exam_system/views.py中添加如下代码:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the online exam system index.")
- 在
online_exam_system/urls.py中添加如下代码:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
- 在根 URLconf 文件中指定我们创建的
online_exam_system/urls.py模块。在mySite/urls.py文件的 urlpatterns 列表里插入一个 include(), 如下:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('es/', include('online_exam_system.urls')),
path('admin/', admin.site.urls),
]
- 运行本地开发服务器& 访问路由
/es. 运行好本地开发服务器后, 访问:http://127.0.0.1:8000/es/, 即可看到:

初始化数据库
通常, 在settings.py的INSTALLED_APPS 默认包括了以下 Django 的自带应用:
- django.contrib.admin -- 管理员站点, 你很快就会使用它。
- django.contrib.auth -- 认证授权系统。
- django.contrib.contenttypes -- 内容类型框架。
- django.contrib.sessions -- 会话框架。
- django.contrib.messages -- 消息框架。
- django.contrib.staticfiles -- 管理静态文件的框架。 这些应用被默认启用是为了给常规项目提供方便。
默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表。请执行以下命令:
$ python manage.py migrate
这个 migrate 命令检查 INSTALLED_APPS 设置,为其中的每个应用创建需要的数据表,至于具体会创建什么,这取决于你的 mysite/settings.py 设置文件和每个应用的数据库迁移文件。
以上命令执行完成后, 通过Naviacat for MySQl可以看到, 已经为我们创建了一些数据表, 表名称与关联图如下所示:

后台管理
django默认提供了一套后台管理系统, 以当前工程为例, 若想进入后台管理系统, 需要先创建一个超级管理员帐号:
python manage.py createsuperuser
按提示操作, 输入相关信息.
然后开启本地开发服务器, 访问: http://127.0.0.1:8000/admin/, 将会看到如下界面


online_exam_system数据库表设计
online_exam_system数据库表设计最终如下: !未完, 待续!