下面是部署Python的Django框架在SAE上的一些问题汇总的完整攻略和两个示例说明。
1. 环境搭建
首先,需要在本地安装 Django 和 mysqlclient。
可以使用以下命令:
pip install django
pip install mysqlclient
如果报错,可以尝试使用以下命令:
pip install django --user
pip install mysqlclient --user
2. 创建 Django 项目
可以使用以下命令创建 Django 项目:
django-admin startproject project_name
3. 推送项目至 SAE
将本地 Django 项目推送至 SAE,可以使用以下命令:
git init
git add .
git commit -m "first commit"
git remote add sae https://git.sinacloud.com/your-sae-app-name.git
git push sae master
4. 修改配置文件
需要将 settings.py 文件中的 DATABASES 配置改为以下内容:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'your_db_name',
'USER': 'your_db_username',
'PASSWORD': 'your_db_password',
'HOST': 'w.rdc.sae.sina.com.cn',
'PORT': '3307',
}
}
需要将 project_name/wsgi.py 文件中的内容改为以下内容:
from django.core.wsgi import get_wsgi_application
import os
import sys
path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if path not in sys.path:
sys.path.insert(0, path)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project_name.settings')
application = get_wsgi_application()
5. 修改数据库中默认字符集为 utf8mb4
需要在 SAE 的数据库中修改表格的默认字符集为 utf8mb4。
示例一:创建一个名为 demo 的 Django 应用
可以使用以下命令:
python manage.py startapp demo
然后在 urls.py 文件中添加以下内容:
from django.conf.urls import url
from demo.views import *
urlpatterns = [
url(r'^hello/$', hello, name='hello'),
]
在 demo/views.py 文件中添加以下内容:
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello World")
在 SAE 的数据库中创建一张表,表名为 test,结构如下:
id int(11) NOT NULL AUTO_INCREMENT,
content varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在 demo/views.py 文件中添加以下代码:
from django.http import HttpResponse
from django.shortcuts import render
from django.db import connections
def test(request):
cursor = connections['default'].cursor()
sql = "INSERT INTO test(content) VALUES ('test')"
cursor.execute(sql)
return HttpResponse("success")
在 urls.py 文件中添加以下代码:
from django.conf.urls import url
from demo.views import *
urlpatterns = [
url(r'^hello/$', hello, name='hello'),
url(r'^test/$', test, name='test'),
]
现在,访问 https://your-sae-app-name.sinaapp.com/test/,应该会将 "test" 插入到数据库中的 test 表中,并返回 "success"。
示例二:读取环境变量
在 Django 项目中,可以使用以下代码来读取环境变量:
import os
env = os.environ.get('ENV', 'dev')
其中,'dev' 是默认值。
在 SAE 的应用设置中,可以设置环境变量,例如:
ENV=prod
这样,在 Django 项目中读取 env 环境变量时,会得到 'prod' 的值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在SAE上部署Python的Django框架的一些问题汇总 - Python技术站