2020-07-03

django+vue项目工程构建(留言板)

前期环境配置

1、进入命令行界面,找到一个目录位置,拉取仓库:

git clone https://se.jisuanke.com/course/python38.git

2、拉取完成后进入目录:

cd python38

3、在当前目录构建一个新的docker镜像:

docker build -t "python:38" .

(构建过程中,涉及pip安装的步骤,出现多次 readtime out 的报错,此时单独执行一下pip命令,并给pip更换清华的源即可。)

4、使用镜像来创建一个容器:

docker run -it -p 8000:8000 -v c:\users\lenovo\python38:/code --name python38 python:38

使用-v来将容器中的文件映射到本地文件,从而可以在本地打开写入,:前是要映射到的本地文件夹路径,这里需要绝对路径,c:\users\lenovo\python38文件夹下有Dockerfile文件。容器的名字叫python38
可以检验一下是否挂载成功,即容器中的文件是否同步到了本地:使用touch a命令在容器中新建一个文件a, 使用ls命令,可以看到此时容器中已经多了一个a文件。再打开一个新的命令行窗口,进入到python38, 使用dir命令,看一下文件夹下是否有a文件,如果有,则说明已经同步。

5、关闭以后再次进入容器的方法:

docker start python38
docker exec -it python38 /bin/bash

6、启动一个数据库服务的实例:

docker run --name mariadb -e MYSQL_ROOT_PASSWORD=root-password -d mariadb

7、先进入数据库服务实例:

docker exec -it mariadb /bin/bash

8、进入数据库shell:

mysql -uroot -proot-password

(用户名是root,密码是root-password)

9、创建一个数据库 api :

create database api default character set utf8 collate utf8_unicode_ci; 

创建项目

1、打开一个命令行窗口,将python38文件夹拷贝一份到一个新的项目文件夹messageboard

xcopy python38 messageboard /s /f /h

2、查看一下messageboard目录下的文件,应该有两个:DockerfileREADME.md, 如果还有其它的,可以使用del命令先删掉:

C:\Users\Lenovo\messageboard>dir
 驱动器 C 中的卷没有标签。
 卷的序列号是 9694-189D

 C:\Users\Lenovo\messageboard 的目录

2020/07/03  18:19    <DIR>          .
2020/07/03  18:19    <DIR>          ..
2020/06/28  23:51             1,103 Dockerfile
2020/06/28  23:51               546 README.md
               2 个文件          1,649 字节
               2 个目录  5,330,268,160 可用字节

3、搭建前端

C:\Users\Lenovo\messageboard>vue create frontend
C:\Users\Lenovo\messageboard>cd frontend
C:\Users\Lenovo\messageboard\frontend>npm run serve

先Ctrl C暂停一下,安装要用的 element UI 插件:

C:\Users\Lenovo\messageboard\frontend>npm i element-ui -S

安装axios插件:

C:\Users\Lenovo\messageboard\frontend>npm install axios -S

安装完成后,再重新npm run serve

4、重新开一个命令行窗口,搭建后端:

C:\Users\Lenovo>cd messageboard

创建一个后端文件夹:

C:\Users\Lenovo\messageboard>mkdir backend

查看此时的项目文件夹:

C:\Users\Lenovo\messageboard>dir
 驱动器 C 中的卷没有标签。
 卷的序列号是 9694-189D

 C:\Users\Lenovo\messageboard 的目录

2020/07/03  18:36    <DIR>          .
2020/07/03  18:36    <DIR>          ..
2020/07/03  18:36    <DIR>          backend
2020/06/28  23:51             1,103 Dockerfile
2020/07/03  18:27    <DIR>          frontend
2020/06/28  23:51               546 README.md
               2 个文件          1,649 字节
               4 个目录  5,032,509,440 可用字节

Dockerfile文件移动到后端文件夹:

C:\Users\Lenovo\messageboard>move Dockerfile backend

查看一下此时的后端文件夹:

C:\Users\Lenovo\messageboard>cd backend

C:\Users\Lenovo\messageboard\backend>dir
 驱动器 C 中的卷没有标签。
 卷的序列号是 9694-189D

 C:\Users\Lenovo\messageboard\backend 的目录

2020/07/03  18:38    <DIR>          .
2020/07/03  18:38    <DIR>          ..
2020/06/28  23:51             1,103 Dockerfile
               1 个文件          1,103 字节
               2 个目录  5,034,713,088 可用字节

进入前期创建过的数据库实例(项目可以共用同一个数据库实例,在实例中新建一个数据库即可):

C:\Users\Lenovo\messageboard\backend>docker exec -it mariadb /bin/bash
create database messageboard default character set utf8 collate utf8_unicode_ci;

查看一下此时实例中的数据库:

MariaDB [(none)]> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| api                |
| information_schema |
| messageboard       |
| mysql              |
| performance_schema |
+--------------------+
5 rows in set (0.000 sec)

退出数据库:

MariaDB [(none)]> exit

使用前期创建好的镜像来创建一个新的Docker容器:

C:\Users\Lenovo\messageboard\backend>docker run -it -p 8001:8001 -v c:\users\lenovo\messageboard\backend:/code --name messageboard python:38

(容器名为messageboard)

进行安装工作:

[root@97d82a39dc2d code]# pipenv install django -i https://pypi.tuna.tsinghua.edu.cn/simple/
[root@97d82a39dc2d code]# pipenv install djangorestframework -i https://pypi.tuna.tsinghua.edu.cn/simple/
[root@97d82a39dc2d code]# pipenv install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple

(使用了清华的源来加速,但是还是会报超时的错误,多装几次就好了)

做到这里就关电脑睡觉去啦~
第二天继续

重新启动并进入容器:

C:\Users\Lenovo\messageboard\backend>docker start messageboard
C:\Users\Lenovo\messageboard\backend>docker exec -it messageboard /bin/bash

进入venv:

[root@97d82a39dc2d code]# pipenv shell

创建项目并进入项目目录:

(code) [root@97d82a39dc2d code]# django-admin startproject api
(code) [root@97d82a39dc2d code]# cd api

在vscode中可以看到现在项目的文件结构:


文件结构

打开api/settings.py,修改配置:

修改配置

在该文件中继续配置数据库:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'root',
        'PASSWORD': 'root-password',
        'NAME': 'messageboard',
        'HOST': '172.17.0.4',
        'PORT': 3306,
    }
}

查看HOST的方法:

C:\Users\Lenovo\messageboard\backend>docker inspect -f "{{ .NetworkSettings.IPAddress }}" mariadb

验证是否配置成功:

(code) [root@97d82a39dc2d api]# ./manage.py migrate

正确输出为:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK

运行server,并在浏览器访问应用,确保django项目创建成功:

(code) [root@97d82a39dc2d api]# ./manage.py runserver 0:8001

(注意之前在创建容器时设置的对外映射的端口号为8001,这里要统一)


访问应用

重新打开一个命令行窗口,并进入django项目中:

C:\Users\Lenovo\messageboard\backend>docker exec -it messageboard /bin/bash
[root@97d82a39dc2d api]# pipenv shell
(code) [root@97d82a39dc2d code]# cd api

创建超级管理员账号:

(code) [root@97d82a39dc2d api]# ./manage.py createsuperuser

(记录一下我的用户名和密码 用户名:root 密码:xingchende0)

管理员登录

建一个app:

(code) [root@97d82a39dc2d api]# ./manage.py startapp messageboard

把它加入到配置文件中:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'messageboard',
]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容