这是一个python网站源码以及部署教程,部署起来用到了各方面的知识,你看下能否根据教程把程序部署起来,并且理解教程中每一步操作是做什么的
Contents
准备工作
升级系统
首先需要升级系统到最新版,终端下执行:
sudo apt update
sudo apt upgrade -y
update
命令只会获得系统上所有包的最新信息,并不会下载或者安装任何一个包。而是 apt upgrade
命令来把这些包下载和升级到最新版本。
sudo apt update
是用于更新本地软件包列表的命令。当你运行这个命令时,系统会检查软件包管理系统的仓库以获取最新的软件包信息,但并不会实际安装任何新软件包。
sudo apt upgrade -y
是用于升级系统中已安装软件包的命令。-y
选项表示在询问是否升级时自动选择“是”。这个命令将安装所有可用的更新软件包,以确保系统中的所有软件都是最新版本。
综合起来,这两个命令一起使用可以确保你的系统软件包列表是最新的,并且已安装的软件包也都是最新版本。
待完成更新之后,建议重新启动下系统,再进行后面的操作。终端下执行:
sudo reboot
sudo reboot
是用于重新启动系统的命令。通过使用 sudo
,你将以超级用户或管理员的身份运行这个命令,因此需要输入管理员密码。
执行这个命令后,系统会立即开始重新启动过程,关闭所有运行的程序和服务,然后重新启动计算机。这在需要应用某些系统级别的更改、安装新内核或进行其他需要重新启动的操作时是常见的做法。
待系统启动后,可以开始安装依赖的mysql以及python环境了。
安装依赖
终端下执行:
sudo apt install mysql-server -y #安装mysql
sudo apt install python3-dev python3-pip python-pip memcached virtualenv -y #安装pip和memcached
pip
是 Python 软件包管理工具,而 memcached
是用于分布式内存缓存的系统。它们分别用于不同的用途和环境。
pip
和 memcached
是两个不同的软件工具。
- pip:
- 定义:
pip
是 Python 的包管理器,用于安装和管理 Python 包(即 Python 软件库)。作用: 它简化了 Python 软件包的安装过程,可以自动下载并安装依赖项,使得在 Python 环境中使用第三方库更加方便。
pip
安装一个 Python 包的命令可能是:pip install 包名
- 定义:
- memcached:
- 定义:
memcached
是一个高性能的分布式内存对象缓存系统。 - 作用: 它被设计用于加速动态 Web 应用程序通过减轻数据库负载来提高性能。
memcached
将数据存储在内存中,以便快速检索,从而加速应用程序的响应时间。
memcached
是一个服务器,可以在多个应用程序之间共享数据。应用程序可以将数据存储在memcached
中,并在需要时从中检索,而无需每次都从数据库中获取数据,从而减轻了数据库的负担。 - 定义:
- python3-dev:
python3-dev
包含用于编译 Python 扩展模块的文件和头文件。
- python3-pip:
python3-pip
是 Python 3 版本的pip
,即 Python 包管理器,用于安装和管理 Python 包。
- python-pip:
python-pip
是 Python 2 版本的pip
,尽管 Python 2 已经不再得到官方支持,但仍然可能需要安装这个版本的pip
,具体取决于项目的需求。
- memcached:
memcached
是分布式内存对象缓存系统,用于提高动态 Web 应用程序的性能。
- virtualenv:
virtualenv
是用于创建 Python 虚拟环境的工具。虚拟环境允许在同一系统上独立地管理不同项目的 Python 包依赖关系,以避免冲突。
sudo apt install supervisor -y
supervisor:
supervisor
是一个进程控制系统,用于监控和管理在系统上运行的进程。它可以确保进程在意外退出时能够重新启动,提高系统的稳定性。
sudo apt install nginx -y
安装nginx
sudo apt-get install python-dev default-libmysqlclient-dev
安装mysqlclient依赖
这个命令是在一个基于 Debian 或 Ubuntu 的 Linux 系统上,使用 apt-get
包管理器安装两个 Python 开发相关的软件包:python-dev
和 default-libmysqlclient-dev
。
- python-dev:
python-dev
是一个包,其中包含了用于编译 Python 扩展模块的文件和头文件。这些文件通常在安装某些 Python 库时需要。
- default-libmysqlclient-dev:
default-libmysqlclient-dev
是用于 MySQL 数据库的开发文件包。它包含了编写使用 MySQL 的应用程序或 Python 的 MySQL 扩展时所需的头文件和库文件。
综合起来,这个命令的目的是以管理员权限安装两个软件包:python-dev
(Python 开发所需的文件)和 default-libmysqlclient-dev
(MySQL 数据库开发文件)。这通常是为了确保在编译和安装某些 Python 库时有必要的依赖项。
mkdir -p python/env && cd python/env
- mkdir -p python/env:
mkdir
是创建目录的命令。-p
选项表示递归地创建目录,即如果父目录不存在,也会一并创建。python/env
是要创建的目录路径,这里创建了一个名为env
的子目录在名为python
的父目录中。
- &&:
&&
是命令连接符,表示在前一个命令成功执行后才执行下一个命令。
- cd python/env:
cd
是切换当前工作目录的命令。python/env
是要切换到的目录路径,这里切换到了之前创建的env
子目录。
综合起来,这个命令的目的是在当前工作目录下创建一个名为 python
的目录,并在其中创建一个名为 env
的子目录,然后切换到新创建的 env
目录中。这通常用于设置项目的虚拟环境,以便在其中安装和管理项目特定的 Python 包和依赖项。
virtualenv -p /usr/bin/python3 djangoblog
这个命令使用了 virtualenv
工具来创建一个名为 djangoblog
的 Python 虚拟环境,并指定使用 /usr/bin/python3
作为 Python 解释器。
让我们逐步解释这个命令:
- virtualenv:
virtualenv
是用于创建 Python 虚拟环境的工具。虚拟环境允许在同一系统上独立地管理不同项目的 Python 包依赖关系,以避免冲突。
- -p /usr/bin/python3:
-p
选项用于指定要在虚拟环境中使用的 Python 解释器。在这里,/usr/bin/python3
是 Python 3 的解释器路径。
- djangoblog:
djangoblog
是虚拟环境的名称,你可以根据项目的名称或需求选择一个合适的名称。
综合起来,这个命令的目的是使用 virtualenv
创建一个名为 djangoblog
的 Python 虚拟环境,并在这个环境中使用 /usr/bin/python3
作为 Python 解释器。一旦虚拟环境创建完成,你可以激活该虚拟环境并在其中安装和管理项目所需的 Python 包,而不会影响到系统的全局 Python 环境。
source djangoblog/bin/activate
这个命令用于激活之前创建的 Python 虚拟环境,其中 djangoblog
是虚拟环境的名称。让我们解释这个命令:
- source:
source
是一个 shell 命令,用于在当前 shell 进程中运行指定的脚本。在这个上下文中,它用于运行虚拟环境中的激活脚本。
- djangoblog/bin/activate:
djangoblog/bin/activate
是虚拟环境中的激活脚本的路径。这个脚本包含了一系列设置,以确保当前 shell 使用虚拟环境中的 Python 解释器和相关工具。
综合起来,这个命令的目的是在当前 shell 中激活名为 djangoblog
的 Python 虚拟环境。一旦虚拟环境被激活,你可以在该环境中安装和运行项目所需的 Python 包,而不会影响到系统的全局 Python 环境。在激活状态下,你会注意到 shell 提示符的变化,显示当前处于虚拟环境中。
在执行完上述命令之后,你的终端应该看起来是类似于下面的样子:

更多关于python的虚拟环境介绍请参考Python虚拟环境设置 这篇文章。
下面开始安装djangoblog运行所需要的依赖,终端下执行:
source ~/python/env/djangoblog/bin/activate cd ~/python/DjangoBlog pip install -Ur requirements.txt
这一系列命令是在一个典型的 Python 项目中设置虚拟环境、进入项目目录、并安装项目的依赖项。让我们逐步解释:
- source ~/python/env/djangoblog/bin/activate:
- 这个命令使用
source
激活了一个名为djangoblog
的 Python 虚拟环境。这个虚拟环境是在路径~/python/env/djangoblog
下创建的。一旦虚拟环境被激活,当前 shell 将使用虚拟环境中的 Python 解释器和相关工具。
- 这个命令使用
- cd ~/python/DjangoBlog:
- 这个命令用于改变当前工作目录到
~/python/DjangoBlog
。这是项目的根目录,可能包含项目的代码和其他文件。
- 这个命令用于改变当前工作目录到
- pip install -Ur requirements.txt:
- 这个命令使用
pip
安装项目所需的 Python 包,这些包的列表定义在requirements.txt
文件中。 -U
选项表示升级已安装的包到最新版本。-r requirements.txt
指定要安装的包的列表,这个列表通常包含项目所需的所有依赖项及其版本信息。
- 这个命令使用
综合起来,这一系列命令的目的是在一个虚拟环境中激活,然后进入到 Django 项目的根目录,并使用 pip
安装项目所需的 Python 包,以确保项目的依赖项都得到满足。这是一种良好的实践,因为它允许你在项目级别管理依赖项,而不会影响全局 Python 环境。
基本配置及部署
配置mysql数据库
终端下执行:
sudo mysql_secure_installation
sudo mysql_secure_installation
是一个 MySQL 提供的用于增强数据库安全性的脚本。当你在安装 MySQL 数据库后第一次运行它时,它会引导你完成一些重要的安全设置。
具体而言,这个脚本执行以下操作:
- 删除匿名用户: 移除数据库中的匿名用户,这些用户可以在没有任何身份验证的情况下访问数据库。
- 禁止远程 root 登录: 阻止 root 用户从远程主机登录到 MySQL 数据库。通常,root 用户应该只能在本地使用,而不是通过网络。
- 删除测试数据库: 删除默认情况下安装时创建的测试数据库。这是为了确保不会存在不必要的测试数据,提高安全性。
- 重新加载权限表: 使上述更改生效,通过重新加载 MySQL 的权限表。
当你运行 sudo mysql_secure_installation
后,系统会要求你输入 MySQL root 用户的密码。如果你是第一次运行该脚本,可能还没有设置 MySQL root 密码,因此你需要按照提示设置一个密码。之后,脚本将会询问是否执行上述列出的安全性设置,你可以根据实际情况选择是否执行这些操作。
这个脚本是 MySQL 数据库安装后进行的一项重要步骤,以确保数据库的基本安全性。
类似下图,需要输入的地方我都用红色箭头标注了出来,需要注意,root密码一定要牢记,后面会用到。

0
表示低(LOW)强度。1
表示中等(MEDIUM)强度。2
表示高(STRONG)强度。
Do you wish to continue with the password provided?(您想使用提供的密码继续吗?)
MySQL安全设置命令mysql_secure_installation
使用root用户登录:mysql -uroot -p
如果无法登录,可以使用如下步骤,请注意,我这里的密码只是示例,请修改成你自己的密码.:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Q1W2E3R4T5#$%qwe';
FLUSH PRIVILEGES;
exit
这一系列的 MySQL 命令用于更改 MySQL 数据库中 ‘root’ 用户在 ‘localhost’ 主机上的身份验证方式以及密码,并刷新权限。让我们逐步解释这些命令:
- sudo mysql:
- 这个命令以超级用户(管理员)权限启动 MySQL 客户端。
- ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘Q1W2E3R4T5#$%qwe’;:
- 这个 SQL 语句用于更改 ‘root’ 用户在 ‘localhost’ 主机上的身份验证方式和密码。
IDENTIFIED WITH mysql_native_password
意味着要使用 MySQL 的本机密码验证机制。BY 'Q1W2E3R4T5#$%qwe'
是新的密码。在这个例子中,密码是 ‘Q1W2E3R4T5#$%qwe’,你可以根据实际需求设置不同的密码。
- FLUSH PRIVILEGES;:
- 这个命令用于刷新 MySQL 的权限表,以使上述更改立即生效。
- exit:
- 这个命令用于退出 MySQL 客户端。
综合起来,这一系列命令的目的是通过 MySQL 客户端以超级用户权限,更改 ‘root’ 用户在 ‘localhost’ 主机上的身份验证方式和密码,并确保新的设置立即生效。这样的操作可能是在安装 MySQL 后或者在某些特定情况下需要更改 ‘root’ 用户的密码时执行的。
如果提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
,则说明你的密码强度不够,需要提供更复杂的密码,如下所示:

修改mysql默认字符集,使用你喜欢的编辑器,如vim或者nano,打开/etc/mysql/conf.d/mysql.cnf
,配置文件,注意,需要使用root权限,如vim:
sudo vim /etc/mysql/conf.d/mysql.cnf
删除该文件的[mysql]
行并贴入如下内容:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
这看起来是 MySQL 的配置文件中的一部分。具体来说,这部分配置设置了 MySQL 服务器、客户端和 MySQL 客户端工具的字符集和排序规则。让我逐一解释:
- [mysqld] 部分:
character-set-server=utf8mb4
: 设置 MySQL 服务器的默认字符集为 utf8mb4。utf8mb4 是一种支持更广泛字符范围的 UTF-8 编码。collation-server=utf8mb4_unicode_ci
: 设置 MySQL 服务器的默认排序规则为 utf8mb4_unicode_ci,这是一种对 Unicode 字符进行比较的排序规则。
- [client] 部分:
default-character-set = utf8mb4
: 设置 MySQL 客户端的默认字符集为 utf8mb4。
- [mysql] 部分:
default-character-set = utf8mb4
: 设置 MySQL 客户端工具(如命令行工具)的默认字符集为 utf8mb4。
这些配置项是为了确保 MySQL 服务器和相关的客户端工具能够正确地使用 utf8mb4 字符集,以适应一些情况下需要处理更广泛字符范围的需求,比如存储和显示 Emoji 表情等 Unicode 字符。这对于支持多语言、多字符集的应用程序是非常重要的。
退出并保存,重启mysql服务,终端下执行:
sudo /etc/init.d/mysql restart
接下来就可以登录mysql数据库并创建用户和数据了,终端下执行:
mysql -uroot -p
进入mysql终端
CREATE USER 'djangoblog'@'localhost' IDENTIFIED BY 'DjAnGoBlOg123!@#';
CREATE DATABASE `djangoblog` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
GRANT all ON djangoblog.* TO 'djangoblog'@'localhost';
FLUSH PRIVILEGES;
这一系列的 SQL 命令用于在 MySQL 数据库中创建一个用户、一个数据库,并授予用户对该数据库的所有权限。以下是每个命令的解释:
CREATE USER 'djangoblog'@'localhost' IDENTIFIED BY 'DjAnGoBlOg123!@#';
:- 创建了一个名为 ‘djangoblog’ 的用户,该用户只能从 ‘localhost’ 主机连接,并使用 ‘DjAnGoBlOg123!@#’ 作为密码。
CREATE DATABASE djangoblog /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
:- 创建了一个名为
djangoblog
的数据库,并指定了该数据库的字符集为 utf8mb4,排序规则为 utf8mb4_unicode_ci。这通常用于支持多语言和 Unicode 字符。
- 创建了一个名为
GRANT all ON djangoblog.* TO 'djangoblog'@'localhost';
:- 赋予 ‘djangoblog’ 用户对 ‘djangoblog’ 数据库的所有权限。这包括 SELECT、INSERT、UPDATE、DELETE 等权限。
FLUSH PRIVILEGES;
:- 刷新 MySQL 的权限表,以使上述授权操作立即生效。
这些 SQL 命令一起完成了在 MySQL 中创建一个用户、创建一个数据库,并为用户授予对该数据库的所有权限的任务。这是在配置 Django 项目时常见的步骤,其中一个数据库用户被创建,并相应的数据库被分配给该用户,以供 Django 应用程序使用。
exit #退出
同样,这里的DjAnGoBlOg123!@#
密码也要改成你自己的密码。
修改djangoblog配置
修改djangoblog/settings.py
中的DATABASES
配置,如下所示,当然,你也可以将其中的配置写入你的.bashrc
中,这样就不需要改这个文件了,我这里只是介绍下如何修改:
.bashrc 是linux系统home目录下的一个shell文件,用于储存用户的个性化设置。 在bash每次启动时都会加载 .bashrc 文件中的内容,并根据内容定制当前bash的配置和环境。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangoblog',
'USER': 'djangoblog',
'PASSWORD': 'DjAnGoBlOg123!@#',
'HOST': 'localhost',
'PORT': 3306,
'OPTIONS': {'charset': 'utf8mb4'},
}
}
'ENGINE': 'django.db.backends.mysql',
: 指定 Django 使用 MySQL 作为数据库后端。'NAME': 'djangoblog',
: 指定要使用的数据库的名称,这里是djangoblog
。'USER': 'djangoblog',
: 指定连接数据库时使用的用户名,这里是djangoblog
。'PASSWORD': 'DjAnGoBlOg123!@#',
: 指定连接数据库时使用的密码,这里是DjAnGoBlOg123!@#
。'HOST': 'localhost',
: 指定数据库的主机,这里是本地主机。'PORT': 3306,
: 指定数据库服务的端口号,MySQL 默认端口是 3306。'OPTIONS': {'charset': 'utf8mb4'},
: 设置一些额外的数据库连接选项,这里指定了字符集为utf8mb4
,以支持多语言和 Unicode 字符。
这个配置告诉 Django 项目使用 MySQL 数据库,连接到本地主机的 MySQL 服务器,使用指定的数据库名称、用户名、密码等进行连接,并设置字符集为 utf8mb4
。这是一个标准的 Django 数据库配置,你可以根据实际情况进行调整。
接下来开始执行数据库迁移,终端下执行:
./manage.py makemigrations
./manage.py migrate
./manage.py createsuperuser #创建超级用户
./manage.py collectstatic --no-input
./manage.py compress --force
- ./manage.py makemigrations:
- 这个命令用于生成数据库迁移文件。Django 中的模型定义发生变化时,使用此命令来创建与这些变化相对应的数据库迁移文件。迁移文件包含了数据库模型的变更描述,如创建、修改、删除表字段等。
- ./manage.py migrate:
- 这个命令用于应用数据库迁移。它会将在
makemigrations
步骤中生成的迁移文件应用到数据库中,确保数据库与模型定义保持同步。
- 这个命令用于应用数据库迁移。它会将在
- ./manage.py createsuperuser:
- 这个命令用于在数据库中创建超级用户。超级用户通常具有对整个 Django 网站的管理权限,包括管理数据库内容和访问 Django 管理界面。
- ./manage.py collectstatic –no-input:
- 这个命令用于将项目中的静态文件(如CSS、JavaScript、图像等)收集到一个统一的目录,以便于部署时进行管理。
--no-input
选项表示不需要用户输入确认。
- 这个命令用于将项目中的静态文件(如CSS、JavaScript、图像等)收集到一个统一的目录,以便于部署时进行管理。
- ./manage.py compress –force:
- 这个命令用于压缩项目中的静态文件。这可能包括合并和最小化 CSS 和 JavaScript 文件,以减小它们的大小,提高网站加载性能。
--force
选项表示强制执行压缩操作。
- 这个命令用于压缩项目中的静态文件。这可能包括合并和最小化 CSS 和 JavaScript 文件,以减小它们的大小,提高网站加载性能。
这些命令通常在 Django 项目的开发和部署过程中使用。首先,通过数据库迁移来更新数据库结构。然后,通过创建超级用户来访问 Django 管理界面。最后,通过收集静态文件和进行静态文件压缩,为部署项目做准备。
下面可以尝试启动网站,终端下执行:
./manage.py runserver
./manage.py runserver
是 Django 项目中用于启动开发服务器的命令。具体来说:
./manage.py
是 Django 项目中的一个命令行工具,用于执行多种管理任务。runserver
是其中的一个命令,它启动一个开发服务器,用于在本地开发环境中运行 Django 应用程序。
当你执行 ./manage.py runserver
后,Django 会在默认的端口(通常是 8000)上启动一个开发服务器,监听来自本地浏览器的请求。这使你能够在本地进行开发和测试,查看应用程序的效果。通常,这个开发服务器用于开发和调试阶段,并不适用于生产环境。
请注意,runserver
命令还接受可选参数,例如指定端口号或 IP 地址。例如,你可以使用 ./manage.py runserver 0.0.0.0:8080
来将服务器绑定到所有可用的 IP 地址,并使用 8080 端口。
看到如下所示,则说明启动成功了:

接下来你就可以使用浏览器打开http://127.0.0.1:8000/
来查看了。你需要访问http://127.0.0.1:8000/admin/
在站点
中,将默认的example.com
修改成你自己的,如www.djangoblog.com
。
gunicorn 配置
安装,终端下执行:
source ~/python/env/djangoblog/bin/activate
pip install gunicorn
配置,终端下执行:
vim ~/python/gunicorn_start.sh
贴入如下内容:
#!/bin/bash
NAME="djangoblog"
DJANGODIR=/home/server/python/djangoblog #Django project directory
USER=server # the user to run as
GROUP=server # the group to run as
NUM_WORKERS=1 # how many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE=djangoblog.settings # which settings file should Django use
DJANGO_WSGI_MODULE=djangoblog.wsgi # WSGI module name
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source /home/server/python/env/djangoblog/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec /home/server/python/env/djangoblog/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--log-level=debug \
--log-file=-
注意,将该文件中的server
修改成你自己的用户,如果是root
用户的话,也要将/home/server
修改为/root
。同时,将djangoblog/settings.py
中的DEBUG = True
修改为DEBUG = False
。 增加可执行权限:
chmod +x ~/python/gunicorn_start.sh
执行:
cd ..
./gunicorn_start.sh
如果看到类似下面的输出,则说明成功了。

然后使用Ctrl+c
来终止。
nginx配置
终端下执行:
# 删除默认配置
sudo rm /etc/nginx/sites-enabled/default
sudo vim /etc/nginx/sites-enabled/djangoblog.com.conf
贴入如下内容:
server {
listen 80;
server_name www.djangoblog.com;
root /home/server/python/djangoblog/;
access_log /var/log/nginx/django_access.log;
error_log /var/log/nginx/django_error.log;
location /static/ {
alias /home/server/python/djangoblog/collectedstatic/;
expires max;
access_log off;
log_not_found off;
}
location /media {
# 静态文件配置
alias /home/server/python/djangoblog/uploads/;
expires max;
}
location ~ \.py$ {
return 403;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:8000;
break;
}
}
}
保存并退出。重启nginx:
sudo /etc/init.d/nginx restart
配置Supervisor
终端下执行:
sudo vim /etc/supervisor/conf.d/djangoblog.conf
贴入如下内容:
[program:djangoblog]
command = /home/server/python//gunicorn_start.sh
user = server
autostart=true
autorestart=true
redirect_stderr = true
stdout_logfile = /var/log/djangoblog.log
stderr_logfile=/var/log/djangoblog.err
同样,需要将server
修改成你自己等用户名. 保存成功后继续执行:
sudo supervisorctl update
sudo supervisorctl reload
sudo /etc/init.d/memcached restart && sudo /etc/init.d/nginx restart
django的部分配置
你需要配置settings.py
中的ALLOWED_HOSTS
,如果你想要使用https的话,还需要配置CSRF_TRUSTED_ORIGINS
,代码是在:settings.py
至此,全部完成。你可以通过你的浏览器访问http://www.djangoblog.com
了。 更多配置相关可以参考: https://github.com/liangliangyy/djangoblog/blob/master/docs/config.md。这里就不再赘述了。
No responses yet