Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
95 lines (75 sloc) 3.21 KB


travis Requirements Status Coverage Status

Filemanager is a simple Django app to browse files on server. You can also integrate this filemanager with CKEditor.



Quick start

Install it by

pip install -e git+

Add "filemanager" to your INSTALLED_APPS setting like this::



  • As a filemanager : To upload files on server by a user to a directory and let him manage his directory by adding, renaming and deleting files and folders inside it.

  • Integrating it with CKEditor for the functionality of "Browse Server".

As a filemanager

In of your app to make filemanager run at url /abc/

from filemanager import path_end
from views import view
urlpatterns = patterns(
   url(r'^abc/'+path_end, view, name='view'),

And then write the view in of your app

from filemanager import FileManager
from settings import MEDIA_ROOT

def view(request, path):
  fm = FileManager(MEDIA_ROOT + 'user_folder/')
  return fm.render(request, path)

And it is done.

Adding constraints to Filemanager : FileManager _init_ is defined as

def __init__(self, basepath, ckeditor_baseurl='', maxfolders=50, maxspace=5*1024, maxfilesize=1*1024, public_url_base=None, extensions=None):
   basepath: User's directory basepath in server.
   maxfolders: Maximum number of total nested folders allowed inside the user directory.
   maxspace (in KB): Maximum space allowed for the user directory.
   maxfilesize (in KB): Limit for the size of an uploaded file allowed in user directory.
   extensions: List of extensions allowed. Ex. ['pdf','html'] etc.
   public_base_url: A base_url if given there will be an option to copy file url with the given url_base.

Hence one should also pass arguments like maxfolders, maxspace, maxfilesize if one doesn't want to use the default ones. If extensions list is not passed then all file-extensions are allowed for upload.

Integrating with CKEditor

Use filemanager.models.CKEditorField field in you model. Or you can use filemanager.widgets.CKEditorWidget as a widget for CKEditor in forms. Both classes can take an extra argument filemanager_url while making instances from them. Suppose you want to run filemanager at url /abc/ in your app then make changes in and like above. Then in CKEditorField or CKEditorWidget pass the url of filemanager as argument filemanager_url. For example in :

from filemanager.models import CKEditorField

class MyModel(models.Model):
  content = CKEditorField(filemanager_url='/app/abc/')