[原创: 云服务器实战系列7] django初体验

405 阅读2分钟

上一篇[原创: 云服务器实战系列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目录下生成以下文件:

编写第一个视图

  1. 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.")
  1. online_exam_system/urls.py中添加如下代码:
from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]
  1. 在根 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),
]
  1. 运行本地开发服务器& 访问路由/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数据库表设计最终如下: !未完, 待续!

推送至远端

部署django应用

验证