Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。
Django是一个开放源代码的Web应用框架,由Python写成。
Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。
Django的安装
1 | pip install Django |
创建工程
安装完django后我们会有一个 django-admin
的管理工具,我们使用此工具来创建工程。
1 | django-admin startproject projectname |
目录说明:
projectname: 项目的容器。
manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
settings.py: 该 Django 项目的设置/配置。
urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
接下来我们进入 projectname 目录输入以下命令,启动服务器:
python manage.py runserver 0.0.0.0:8000
0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。
在浏览器输入你服务器的 ip(这里我们输入本机 IP 地址: 127.0.0.1:8000) 及端口号,如果正常启动,会打开django默认页面。
创建 APP
python manage.py startapp 应用名
新建一个应用文件appname,它的里面也创建了一些py文件和包:
1 | python manage.py startapp appname |
下面介绍这些文件都是什么:
admin.py:管理站点模型的声明文件,默认为空。
apps.py:应用信息定义文件。在其中生成了类Appconfig,类用于定义应用名等Meta数据。
migrations: 用于在之后定义引用迁移功能。
models.py: 添加模型层数据类的文件。
test.py:测试代码文件。
views.py:定义URL响应函数。
urls.py:需要自己创建,作为子路由。
创建好app后在settings.py
中的INSTALLED_APPS
添加appname
1 | INSTALLED_APPS = [ |
网页和静态文件
在appname
中新建一个templates
文件夹存放html
新建static
文件夹存放js,image,css等
并且在settings.py
中添加静态文件目录1
2
3
4STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
注意:每一个app中的static访问路径都是相同的。
在html中的使用:
1 | 首先创建了一个css文件 |
添加脚本目录
我们有一些脚本写在另一个文件夹,我们希望引入它们,在settings.py
中添加1
2import sys
sys.path.insert(0, os.path.join(BASE_DIR, '/home/Scripts'))
数据库相关
部署静态文件
收集静态文件
python manage.py collectstatic
这一句话就会把以前放在app下static中的静态文件全部拷贝到 settings.py 中设置的 STATIC_ROOT 文件夹中
用UWSGI部署
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。
WSGI是一种通信协议。
uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。
uwsgi安装命令
1 | sudo pip install uwsgi --upgrade |
uwsgi.ini配置文件编写
1 | [uwsgi] |
关闭只能关闭pidfile里记录的pid号,不能kill其它三个进程
1 | uwsgi --ini uwsgi.ini # 启动 |
部署到服务器
用 apache2 或 nginx 示例代码
apache2配置文件1
2
3
4
5Alias to/collected_static/
<Directory /path/to/collected_static>
Require all granted
</Directory>
nginx 示例代码:1
2
3
4
5
6
7location /media {
alias /path/to/project/media;
}
location /static {
alias /path/to/project/collected_static;
}