Django开发者群  - 讨论区

标题:【分享】django-filebrowser的使用

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哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号