2011年02月15日 星期二 21:42
目的:
在django自带的admin中添加filebrowser,实现文件上传功能。
django-filebrowser项目地址: http://code.google.com/p/django-filebrowser/
要求:
1:能够搭建基本的django环境.能够自己写一个测试module,并通过admin管理。懂得django的一些常识:譬如什么是media,什么是prefix
2:阅读此文之前,还需要阅读一下官方文档,我写的不是手把手的图文教程,只是记录自己的一个大概,分享一下经验,所以什么都不懂的话,肯定会看不懂。
3:我的设置肯定还有一些需要改进的地方,如果需要作为项目发布,还请多研究一下源码.
4: 有什么不太明白的地方,欢迎提问,我会尽量回答。更欢迎高手指点其中的错误 .
环境:
OS:ubuntu10.04
python:2.65 (own system)
django:1.24 final
mysql:5.X
web server :apache2+mod_python
1:首先建立一个基本的django project,要求能够够把admin运行起来,如果这一步都运行有问题,那么请参考django book2.0 中文版。
下文中 假设工程的名字叫:max 位置在:/home/qin/django/
2:下载所需要的plus:PIL,django-grappelli,django-filebrowser
PIL:sudo apt-get install python-image (注:大概是这样,写此文时我在windows下面,如果不对,可以google一下)
django-grappelli: http://code.google.com/p/django-grappelli/downloads/list 直接下载压缩包,解压缩。
django-filebrowser:先安装subversion,sudo apt-get install subversion
然后在命令行输入:svn checkout http ://django-filebrowser.googlecode.com/svn/trunk/ django-filebrower(注:此处与官方文档的下载链接略有不同,多了一个setup.py文件,其实都是一样的,我只是下载了官方地址的上一层目录)
3:建立各个media目录:
在/home/qin/django/max(工程目录)中建立以下文件夹:
admin_meidas:用来放admin需要用的media文件,如:grappelli的media,filebrowser的media都需要copy到此;
site_medias: 主站点的media,简单的说就是普通用户访问页面时,你需要使用的css,js等文件
uploads:用来保存filebrowser上传的文件
templates:网站前端的模板文件
4:安装grappelli:
a:解压缩刚刚下载的grappelli文件,在命令行进入其目录后运行:python setup.py install,将grappelli安装到django框架中;
b:将grappelli文件夹下的的grappelli复制到/home/qin/django/max(项目位置)中,(注意,此grappelli应该是与setup.py同一目录下的。)将grappelli/media中的所有文件copy到 admin_medias中;
c:在max.settings中添加app,grappelli;在urls.py中添加(r'grappelli/',include('grappelli.urls'))
d:运行python manage.py runserver --adminmedia=/home/qin/django/max/admin_medias,测试admin页面是否显示django。
出现错误时,烦请查看命令行的提示,一般都会有404错误.查看页面源码,一般很容易找到错误。
安装grappelli的更详细步骤,请参考这篇文章: http://www.zeuux.org/group/django/bbs/content/6103/
5:安装filebrowser
a:在命令行进入刚刚通过SVN下载的django-filebrowser,运行:sudo python setup.py install 安装filebrowser到django框架中。
b:将该文件目录下的filebrowser复制到 /home/qin/django/max(项目目录)中,将filebrowser/media下的filebrowser复制到admin_medias中;
c:在max.settings中添加app,在urls中添加(r'filebrowser/',include('filebrowser.urls')),
d:此时再用django自带的manage运行服务器,filebrowser会无法工作,需要在max.settings中设定:
#FILEBROWSE_DIRECTORY="/home/qin/Django/max/uploads"
#设置图片上传的位置
FILEBROWSER_DEBUG=True
#the absolute path to the directory that holds your media-files.
FILEBROWSER_MEDIA_ROOT="/home/qin/django/max/uploads/"
#FILEBROWSER_MEDIA_ROOT=""
#URL that handlers the media served from MEDIA_ROOT.
FILEBROWSER_MEDIA_URL="http://192.168.1.100/uploads/"
#设置JS的URL前缀
FILEBROWSER_URL_FILEBROWSER_MEDIA="/admin_media/filebrowser/"
FILEBROWSER_PATH_FILEBROWSER_MEDIA=""
#Main FileBrowser Directory.This has to be directory within MEDIA_ROOT.leave empty in order to browse all files under MEDIA_ROOT
#图片在服务器上的地址,
#FILEBROWSER_DIRECTORY="http://192.168.1.100/uploads/"
FILEBROWSER_DIRECTORY=""
具体含义请参考filebrowser的啊available setting。里面有详细说明;此时在测试环境下也可以运行了。如果有问题,烦请看命令行的404错误提示。
6:将项目发布到apache2
进入/etc/apache2/httpd.conf:编辑内容如下:
<VirtualHost *:80>
# ServerName uimax.com #服务器名称
#项目地址,工程名就叫max
DocumentRoot "/home/qin/django/max/"
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
#将项目根目录所在的父目录加入path
PythonPath "['/home/qin/django/']+sys.path "
#注意,max.settings是我的project name
SetEnv DJANGO_SETTINGS_MODULE max.settings
# PythonAutoReload On
PythonDebug On
</Location>
#项目配置(此处配置错误则项目的样式无法使用)。其中website为vrview的一个模块
# Alias "/media" "/home/qin/django/myapp/grappelli/media/"
# <Directory "/home/qin/django/max/grappelli/">
# Options Indexes FollowSymLinks
# AllowOverride None
# Order allow,deny
# Allow from all
# </Directory>
# <Location "/media/">
# SetHandler None
# </Location>
#站点前端的meida文件位置,以及prefix
Alias "/site_media" "/home/qin/django/max/site_medias/"
<Location "/site_media/">
SetHandler None
</location>
#模板文件地址,以及模板的prefix
Alias "/static" "/home/qin/django/max/templates/"
<Location "/static/">
SetHandler None
</Location>
#后台管理配置,admin管理页面所需要用的media文件地址:譬如:grappelli,django—filebrowser,django-tinymce的media
Alias "/admin_media" "/home/qin/django/max/admin_medias/"
# Alias "/static_media" "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/media/"
<Location "/admin_media/">
SetHandler None
</Location>
<Directory "/home/qin/django/max/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# #配置加载样式
<LocationMatch "(?i)\.(jpg|gif|png|txt|ico|pdf|css|jpeg)$">
SetHandler None
</LocationMatch>
#django-filebrowser需要使用到的文件地址,以及prefix
Alias "/filebrowser" "/home/qin/django/max/admin_medias/filebrowser/"
<Directory "/filebrowser/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
ALlow from all
</Directory>
</VirtualHost>
重启apache后,基本上就可以运行了。
2011年02月16日 星期三 09:27
功能很强大啊
Zeuux © 2024
京ICP备05028076号