Django学习笔记(1)
环境配置
- 租一个服务器
- 在服务器上装好docker
- 将docker镜像的压缩包传到租好的服务器里
- 将镜像压缩包解压成docker镜像
docker load -i django_lesson_1_0.tar
- 运行镜像,创建容器,并且设置端口映射
docker run -p 20000:22 -p 8000:8000 --name django_server -itd django_lesson:1.0
- 进到自己的容器
docker attach django_server
- 由于root权限过大,我们创建一个新用户,并设置密码
adduser hqkk
- 给用户分配sudo权限
usermod -aG sudo hqkk
- 使用 <kbd>Ctrl</kbd>+<kbd>p</kbd>和<kbd>Ctrl</kbd>+<kbd>q</kbd> 将容器挂起
- 到服务器开放所有端口
- 本地配置docker的免密登陆,配置完成之后,就可以使用
ssh django
命令直接连接到我们配置好的docker容器。
运行django
-
养成好习惯:写项目之前先用git和tmux维护起来
-
先输入
django-admin --version
查看django版本,检查是否安装成功(图例表示安装成功)。

- 执行命令:
django-admin startproject acapp
,创建一个项目 - 可以查看一下目录结构:
acapp
acapp
__init__.py
asgi.py
settings.py
urls.py
wigs.py
manage.py
- 将自己的ip地址加入到ALLOWED_HOSTS里边("*"表示允许所有IP地址访问)

- 跑原始项目
python3 manage.py runserver 0.0.0.0:8000
运行截图如下

创建自己的app
- 运行
python3 manage.py startapp game
,会在目录中生成一个名字为game的文件夹,文件目录的结构如下:
game
__init__.py
admin.py
apps.py
migrations
__init__.py
models.py
tests.py
views.py
至此,整个项目结构如下:
README.md
acapp
__init__.py
asgi.py
settings.py
urls.py
wigs.py
db.sqlite3
game
__init__.py
admin.py 存储管理员页面能够看到那些数据库
apps.py
migrations
__init__.py
models.py 定义和存储自己的数据库表
tests.py
views.py 写视图,函数
manage.py
- 运行
python manage.py migrate
将数据库表加载到项目中 - 进入到admin界面
0.0.0.0:8000/admin
,如图

- 创建管理员账户:
python3 manage.py createsuperuser
,创建管理员账户,之后再填写自己创建的账号信息,就可以登陆到管理员页面了。如图

-
创建自己的app,先cd到刚刚创建的game目录里面(以下操作都在game文件夹进行),再创建
urls.py
文件和templates
文件。(以后会经常用到models.py,views.py,urls.py,templates文件)urls.py的作用:路由,将地址匹配成对应的函数
templates:存储html
-
在views.py中写入 以下内容:

- 在urls.py中写入以下内容(通俗理解为ip地址映射到index函数):

- app(game)的url还需要写入到总url.py中(acapp中的url.py)

此时,仅使用0.0.0.0:8000就可以访问到我们写的页面了。

-
一通操作:用户请求 -> acapp的urls -> game.urls里边 ->index函数里边,函数里写什么东西,就显示什么东西。
-
写多个网页
views.py里面写入新方法:

改写games/urls.py:

- 这样,输入0.0.0.0:8000/play/就可以进入到我们自己创建的游戏界面:
