django框架学习笔记

这里是 Django框架课 的学习笔记

项目地址在 这里
配置好环境的网址在 这里

1.准备工作

1.配置 docker

  • 租一台云服务器

  • 给云服务器分配一个 acs 用户

防止 root 用户权限太大造成无法挽回的损失
并添加 sudo 权限

1
2
adduser acs
usermod -aG sudo acs
  • 换源

Ubuntu 的软件源配置文件是 /etc/apt/sources.list。将系统自带的该文件做个备份,将该文件替换为下面内容,即可使用 TUNA 的软件源镜像。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
  • 在云服务器上安装 tmux, vim, docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sudo apt-get install tmux
sudo apt-get install vim

# docker
sudo apt-get update

sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

sudo usermod -aG docker $USER # 将当前用户添加到docker用户组,避免每次使用docker命令都需要加上sudo权限
  • 利用 AC Terminal 传递祖传文件
1
2
scp .bashrc .vimrc .tmux.conf myserver1:
scp /var/lib/acwing/docker/images/django_lesson_1_0.tar myserver1:
  • 创建容器
1
2
docker load -i django_lesson_1_0.tar
docker run -p 20000:22 -p 8000:8000 --name django_server -itd django_lesson:1.0

并在腾讯云上打开 8000、20000 端口

注意:如果有 Linux基础课8 的容器应当将其删掉,因为容器开放的端口不能重复

  • 进入容器新建非根用户
1
2
3
docker attach django_server
adduser acs
usermod -aG sudo acs
  • 退出并挂起容器 crtl-p + crtl-q

  • 配置免密登录

1
ssh-copy-id django
  • 配置容器中的 tmuxvim
1
scp .bashrc .vimrc .tmux.conf django:

2.配置 git 环境

详见 Linux 基础课 此处不再赘述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ssh-key-gen

git config --global user.name "Logic shao"
git config --global user.email "1712207189@qq.com"

vim README.md

git add .
git commit -m "The beginning of an epic masterpiece!!!"

git remote add origin git@git.acwing.com:syf/djangoclass.git
git push --set-upstream origin master

vim .gitignore

3.配置 django

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
django-admin --version # 检测 django
django-admin startproject acapp # 新建 acapp 项目

python3 manage.py runserver 0.0.0.0:8000 # 启动项目

# 修改 `acapp/acapp/settings.py` 文件
ALLOWED_HOSTS = ["xxx.xxx.xxx.xxx"]

python3 manage.py startapp game # 新建 app

python3 manage.py createsuperuser # 新建管理员

# 创建需要的文件
touch urls.py
mkdir templates

# 修改 view.py urls.py 文件

2.创建菜单界面

1.项目架构设计

项目系统设计

  • menu: 菜单页面
  • playground: 游戏界面
  • settings: 设置界面

项目文件结构:

  • templates目录:管理 html 文件
  • urls目录:管理路由,即链接与函数的对应关系
  • views目录:管理 http 函数
  • models目录:管理数据库数据
  • static目录:管理静态文件,比如:
    • css:对象的格式,比如位置、长宽、颜色、背景、字体大小等
    • js:对象的逻辑,比如对象的创建与销毁、事件函数、移动、变色等
    • image:图片
    • audio:声音
  • consumers目录:管理 websocket 函数

django_init.sh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#! /bin/bash

p=/home/acs/acapp

cd ${p}/game && rm urls.py views.py models.py && mkdir urls views models static
# 其中 urls,views,models 是 python 文件
# 如需 `import`, 则需要创建 `__init__.py` 文件
# 否则就会报错
for i in urls views models
do
cd ${p}/game/$i && touch __init__.py && mkdir menu playground settings
done

# 创建静态文件目录
cd ${p}/game/static && mkdir css js image
cd ${p}/game/static/image && mkdir menu playground settings

# 下载图片
cd ${p}/game/static/image/menu
wget --output-document=background.gif https://gimg2.baidu.com/image_search/src=http%3A%2F%2Finews.gtimg.com%2Fnewsapp_match%2F0%2F11156556256%2F0.jpg&refer=http%3A%2F%2Finews.gtimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg
rm wget-log
# 图片路由在这 http://1.116.161.41:8000/static/image/menu/background.gif

# 创建 css 文件
cd ${p}/game/static/css/ && touch game.css

# 创建 js 文件
cd ${p}/game/static/js && mkdir dist src
cd src && mkdir menu playground settings
# dist 存最终运行的 js 文件
# src 存所有 js 文件

# 创建压缩脚本
cd ${p} && mkdir scripts && cd scripts && mkdir compress_game_js.sh

cd ${p}/templates/ && mkdir menu playground settings multiends
cd multiends && vim web.html
cd ${p}/game/views && vim index.py

2.基本设置

修改 acapp/acapp/settings.py 文件

  • 修改时区为上海
1
TIME_ZONE = 'Asia/Shanghai'
  • 添加 acappdjango 项目
1
2
3
4
5
6
7
8
9
10
11
# Application definition

INSTALLED_APPS = [
'game.apps.GameConfig', # 加上这个
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
  • 添加静态文件
1
2
3
4
5
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

3.创建游戏界面

这节课主要是 js 内容,笔记以后有时间再补

4.部署nginx与对接acapp

具体步骤参见 y总讲义

5.创建账号系统

1.用户名密码登录

笔记以后有时间再补

2.web端AcWing授权登录

3.acapp端AcWing授权登录

6.实现联机对战

7.实现聊天系统

8.实现匹配系统