Django学习笔记-配置Docker、Git环境与项目创建

笔记内容转载自 AcWing 的 Django 框架课讲义,课程链接:AcWing Django 框架课

1. 配置Docker环境

首先拉取一个 Ubuntu 镜像:

docker pull ubuntu:20.04

创建容器后进入容器配置基本环境并创建用户:

docker run -p 20000:22 -p 8000:8000 --name ubuntu_django -itd ubuntu:20.04
docker attach ubuntu_django
apt-get update
apt-get install sudo
apt-get install vim
apt-get install tmux
apt-get install ipython3
apt-get install tree
apt-get install silversearcher-ag
apt-get install openssh-server
adduser asanosaki
usermod -aG sudo asanosaki
exit

然后去云服务器官网放行20000端口和8000端口:

在这里插入图片描述

通过 SSH 远程连接容器:

ssh asanosaki@localhost -p 20000

在这里插入图片描述

如果出现 kex_exchange_identification: read: Connection reset by peer 报错,就去进入容器的根用户下编辑 hosts.allow 文件:

vim /etc/hosts.allow

在文件中添加一行:sshd: ALL,然后重启 SSH 服务:service ssh restart

进入容器根用户安装剩余的环境:

apt-get update
apt-get install python3
apt-get install python3-pip
apt-get install git
pip install Django
pip install uwsgi
pip install supervisor

在命令行查看 Django 版本:

django-admin --version

2. Django项目创建

通过以下命令创建一个 Django 项目:

django-admin startproject djangoapp

将项目上传至 Git(注意需要先在容器中生成公钥,并在 Git 中添加公钥):

cd djangoapp/
git init
git config --global user.name "xxx"
git config --global user.email "xxx@qq.com"
git add .
git commit -m "initial project"
git remote add origin git@git.acwing.com:<用户ID>/<仓库名>.git
git push --set-upstream origin master

尝试启动一下项目:

python3 manage.py runserver 0.0.0.0:8000

这时候访问一下网址:http://<云服务器的公网IP>:8000/,会看到提示:Invalid HTTP_HOST header: '<云服务器的公网IP>:8000'. You may need to add '<云服务器的公网IP>' to ALLOWED_HOSTS.,这是因为 Django 是个很安全的框架,会自动屏蔽很多可疑的访问,我们需要将公网 IP 添加到 settings.py 文件的 ALLOWED_HOSTS 中:

cd djangoapp/  # 此时在 ~/djangoapp/djangoapp 中
vim settings.py
找到 ALLOWED_HOSTS = [],改为 ALLOWED_HOSTS = ["<公网IP>"]  # 注意要用引号

Tips:如果找不到 ALLOWED_HOSTS 可以使用 ag 命令查找:

ag ALLOWED_HOSTS

现在即可成功访问网址:

在这里插入图片描述

此时会看到项目文件夹下出现了一个 __pycache__ 目录,这个是预编译好的一些文件,用于加速 Python 运行,我们在往 Git 上传代码时最好不要上传这些中间文件,我们可以在仓库的根目录下添加一个 .gitignore 文件,文件内容如下:

**/__pycache__
*.swp  # 过滤掉swap文件

最后上传至 Git:

git add .
git commit -m "modify ALLOWED_HOSTS"
git push

3. Django App创建

在上一节中启动的页面为 Django 的默认页面,我们在开发时需要创建一个新的 App 写自己的页面,首先通过以下指令创建一个名为 game 的 App,创建好后当前目录下会生成一个名为 game 的目录:

python3 manage.py startapp game

git add .
git commit -m "init app game"
git push

此时启动 runserver 指令时会发现出现了报错:You have 18 unapplied migration(s). Your project may not work properly ......,原因是有一部分的数据库修改还没有同步到数据库里,运行以下指令同步数据库的修改:

python3 manage.py migrate

打开 http://<公网IP>:8000/admin/ 页面可以看到 Django 自带的管理员页面,我们可以创建管理员用户(假设用户名和密码都为 admin):

python3 manage.py createsuperuser

然后即可登录管理员账户进入管理员界面:

在这里插入图片描述

我们再回过头来进入之前创建的 App 中,能看到有几个比较重要的文件:models.pyviews.py,我们先手动创建剩余的比较重要的文件:

touch urls.py
mkdir templates

接下来整个项目需要操作的就这四个文件,其中 models.py 存储各种数据结构,views.py 存储视图(函数),例如每点一次按钮都要调用一次服务器端的函数,urls.py 是一个路由,用户访问某个功能(页面)时传的是一个地址(URL),服务器端拿到这个地址后需要做一个路由,查看调用的是哪个函数,templates 存储 HTML 文件。

首先在 views.py 中写一个简单的函数:

from django.http import HttpResponse

def index(request):
    return HttpResponse('Hello World!')

然后参考 ~/djangoapp/djangoapp/urls.py(总 URL 文件)编写 game 中的 urls.py 文件:

from django.urls import path
from game.views import index

urlpatterns = [
    path('', index, name='index')
]

然后我们需要更新一下总 URL 文件(~/djangoapp/djangoapp/urls.py):

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('game/', include('game.urls')),
    path('admin/', admin.site.urls),
]

此时我们在项目根目录下启动项目:python3 manage.py runserver 0.0.0.0:8000,然后打开网址 http://<公网IP>:8000/game/ 即可看到我们的网页,最后更新一下 Git 即可。

4. 更改Django项目名称

我们以 settings.py 文件为例,假设项目的目录结构为:OLD_NAME/OLD_NAME/settings.py,项目根目录的名称可以随意改变,即我们可以先改为 NEW_NAME/OLD_NAME/...,然后我们再将第二级 OLD_NAME 目录改为 NEW_NAME,修改完第二级目录的名字后我们还需要改以下几个文件:

  • settings.py
ROOT_URLCONF = 'NEW_NAME.urls'
WSGI_APPLICATION = 'NEW_NAME.wsgi.application'
  • manage.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'NEW_NAME.settings')
  • asgi.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'NEW_NAME.settings')
  • wsgi.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'NEW_NAME.settings')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柃歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值