一、二进制图片输出网页
有时候我们的图片是通过代码生成的,比如二维码和处理过的图片,我们不需要将图片存储为文件即可直接输出文件到浏览器。
Django版本为1.9
#views.py文件
from django.http import HttpResponse
def my_image(request):
img_data = open('F:/1.jpg','rb').read()
return HttpResponse(img_data,content_type="image/jpeg")
#urls.py文件
urlpatterns = patterns('',
(r'^image/$',my_image),
)
可以尝试从数据库中读取小图标显示在网页。
二、部署环境搭建:
环境:阿里云平台,Ubuntu 14.04.2 LTS, Server version: Apache/2.4.7 (Ubuntu)
1、安装Apache2和mod_wsgi
sudo apt-get install apache2
# python2
sudo apt-get install libapache2-mod-wsgi
# python3
sudo apt-get install libapache2-mod-wsgi-py3
2、确认安装的apache版本号
apachectl -v
显示:
Server version: Apache/2.4.6(ubuntu)
3、修改ports.conf
/etc/apache2/ports.conf
在Listen 80下方添加Listen 9999 可以同时监听服务器9999端口
4、添加site-available
/etc/apache2/sites-available
此文件夹下添加mysite.conf文件mysite是自己为网站起得名字,内容为:
<VirtualHost *:9999>
DocumentRoot /var/www/SinaCloud/SinaCloud
Alias /static/ /var/www/SinaCloud/collected_static/
<Directory /var/www/SinaCloud/SinaCloud>
Require all granted
</Directory>
<Directory /var/www/SinaCloud/collected_static>
Require all granted
</Directory>
WSGIScriptAlias / /var/www/SinaCloud/SinaCloud/wsgi.py
</VirtualHost>
注:如果你的apache版本号是 2.2.x,用下面的代替“Require all granted”
Order deny,allow
Allow from all
5、建立Django代码库
将Django代码复制到任意位置,该位置需要添加到第4步的文件中(此处假设将代码放在了/var/www/ 目录下)
6、修改wsgi文件
在 import os 后添加下面代码
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0,PROJECT_DIR)
7、 设置目录和文件权限
进入 /var/www/ 目录将代码库 mysite目录设置为755即可
chmod –R 755 mysite/
8、激活新网站
执行命令
a2ensite sitename
# or
a2ensite sitename.conf
此命令会根据site-available下的sitename.conf在/etc/apache2/sites-enabled目录下建立sitename.conf文件
如果顺利,这样网站就搭建成功,未执行此步骤访问网站时会显示源代码。
通过x.x.x.x:9999可访问网站,9999为在ports.conf里设置的端口
9、静态文件
修改代码库主目录的mysite/mysite/settings.py文件,在最后一行即 STATIC_URL = ‘/static/’ 后插入:
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
collected_static 是apache收集静态文件的存放目录,这样设置,绝对路径是:
/var/www/mysite/collected_static/
然后运行python manager.py collectstatic
命令,会将静态文件收集到collected_static。
此目录需要加到第4步的内容里才能生效。
10 . 总结
(1). 部署时文件对应关系:
sitename.conf —> wsgi.py—> settings.py—-> urls.py —-> views.py
(2). 每次修改后需要运行service apache2 reload命令来使修改生效。