运行Django

备注

对于Django,初始化整个项目称为 startproject ,此时默认会在项目下生成一个和项目同名的 app

初始化项目下的某个应用功能,例如 api ,则在项目目录下执行 startapp ,例如,如果要使用 Django REST framework快速起步 则执行:

django-admin.py startapp api
  • 创建开发项目

Djang提供了一个命令行工具来创建一个项目,这里我们构建的是一个清单程序,所以命名项目 superlists

django-admin.py startproject superlists

上述命令会创建目录 superlists 并在这个目录下还有一个同名的 superlists 子目录:这个 superlists/superlists 文件夹就是用来保存应用的整个项目的文件。

superlists 目录下 manage.py 程序,这个程序是负责Django环境管理和运行的。

  • 数据库同步(Apply all migrations: admin, auth, contenttypes, sessions):

    python manage.py migrate
    
  • 运行开发服务器:

    python manage.py runserver
    

此时,再次运行 python functional_tests.py 则可以看到启动的Firefox正确打开了Django页面。

Django ALLOWED_HOSTS

在 Django 项目 settings.py 中有一行 ALLOWED_HOSTS 限制了客户端访问Django时候能够使用域名和IP地址:

修订允许访问的域名和IP
ALLOWED_HOSTS = ['.localhost', '127.0.0.1', '192.168.47.230', 'onesre.huatai.me']
# ALLOWED_HOSTS = ['*']

如果没有配置好 ALLOWED_HOSTS (这里配置的是Django服务器IP地址 192.168.47.230 和域名 onesre.huatai.me ),则外部访问就会被拒绝,并且在Django终端显示:

"GET /api/hygonwafmonitor/ HTTP/1.0" 200 15996
Invalid HTTP_HOST header: '192.168.47.230'. You may need to add '192.168.47.230' to ALLOWED_HOSTS.
Bad Request: /api/hygonwafmonitor/
"GET /api/hygonwafmonitor/ HTTP/1.0" 400 143

创建Git仓库

现在把程序提交到git仓库( functional_tests.py 移动到 superlists 目录下然后再执行 ):

git init .

git仓库初始化之后,提交文件前需要先把不合适提交的数据敏感文件剔除,例如 superlists/db.sqlite3

echo "db.sqlite3" >> .gitignore
echo "__pycache__" >> .gitignore
echo "*.pyc" >> .gitignore

如果没有剔除不需要添加的文件,例如 superlists/superlists/__pycache__ 目录下的文件,则使用以下命令删除:

git rm -r --cached superlists/superlists/__pycache__

然后添加文件:

git add .
git status

检查没有问题,就提交:

git commit

此时填写提交的简述。

如果要提交到远程github上,参考github的文档。

Docker Compose运行开发环境

我们通过部署 Django开发环境(linux)运行Django ,但是每次这样重复创建环境也是非常麻烦的事情。并且,部署到测试环境、生产环境,都是重复的工作。我们通过 Docker Atlas 可以 快速实现Docker运行Djgnao