django-filebrowser and grapelli
I have installed Django file browser and added
django-grappelli
provides a revamp of the existing django admin look-and-feel. In
itself, it simply makes your site look better – you’ll need this in case
a site also needs to provide admin access to the product owner. For
this case, however, we’re using grappelli as a dependency for
django-filebrowser.
django-filebrowser does exactly what its name says. In a nutshell, django-filebrowser lets you navigate through and manipulate your media files through your django admin site. This is useful should you eventually need the end-user to be able to control image files without having to dig deep into the server’s internal filesystem.
First, make sure the dependencies are installed. PIL may prove tricky to install, but from there it’s all simple.
Note: the PROJECT_ROOT style makes your settings more portable, so it’s a good habit to start.
Next, we make a symbolic link to the grappelli media folder (in site-packages) from your project media folder.(In the directory defined by MEDIA_ROOT)ln —symbolic /PATH/TO/site_packages/grappelli/media grappelli
Then, make sure your installed apps has this order:
Same goes for your urls,
(In the directory defined by MEDIA_ROOT)
Indicate in additional settings using this as reference:http://code.google.com/p/django-filebrowser/wiki/Settings
Once you’re set up, check it out with the following url:/admin/filebrowser/browse/django-filebrowser does exactly what its name says. In a nutshell, django-filebrowser lets you navigate through and manipulate your media files through your django admin site. This is useful should you eventually need the end-user to be able to control image files without having to dig deep into the server’s internal filesystem.
First, make sure the dependencies are installed. PIL may prove tricky to install, but from there it’s all simple.
- pip install django==1.2
- pip install PIL==1.1.7
- pip install django-grappelli=2.1
- pip install django-filebrowser==3.1
Next, we make a symbolic link to the grappelli media folder (in site-packages) from your project media folder.(In the directory defined by MEDIA_ROOT)ln —symbolic /PATH/TO/site_packages/grappelli/media grappelli
Then, make sure your installed apps has this order:
I have installed Django file browser and added
grappelli
and filebrowser
to my installed apps. And did every thing said in documention but when I browse http://127.0.0.1:8000/admin/filebrowser/
I got 404 page not found error. What's the problem? I configured my media settings like this:# Media files
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/media/admin/'
FILEBROWSER_DIRECTORY = '/media/'
2 answers
-
Just solved the exact same problem, and it's the oldest one in the book: permissions
(facepalm)
- make sure your
media
dir is chmod-ed to 755
- create
media/uploads
dir and also chmod it to 755
In settings.py, I don't use the FILEBROWSER_DIRECTORY
(I guess that uploads
is the default)
I really think that throwing 400 Bad Request
is utterly useless and anoying, but oh well...
Just a related note: I don't think there is anything at /admin/filebrowser/
, it just gives me a 404. Please correct me it I'm missing something here :)
-
The problem is your FILEBROWSER_DIRECTORY setting. It should have absolute path.
Unfortunately, the error is hidden by the nasty 400 Bad Request, as explained in this ticket.
Django] #21668: Invalid upload_to attribute results in hard-to-debug "Bad Request" 400 error.
12 posts by 1 author
Django
12/25/13
#21668: Invalid upload_to attribute results in hard-to-debug "Bad Request" 400
error.
------------------------------ -+--------------------
Reporter: GDorn | Owner: nobody
Type: Bug | Status: new
Component: Uncategorized | Version: 1.6
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ -+--------------------
It's admirable that django tries to prevent files from being uploaded
outside of MEDIA_ROOT. However, the documentation for file uploads
(https://docs.djangoproject. com/en/dev/topics/http/file- uploads/) doesn't
make this requirement clear, and getting it wrong results in several
layers of useful error messages getting eaten by a generic message
instead. It starts with django.utils._os.safe_join raising a ValueError if the
upload_to path isn't within MEDIA_ROOT. This has a useful message payload
showing both paths and why the exception happened. This message isn't
logged.
However, django.core.files.storage. FileSystemStorage.path immediately
catches that exception, eats the message, and raises a much more generic
SuspiciousFileOperation, containing the desired path but no explanation of
what went wrong.
Finally, django.core.handlers.base. BaseHandler.get_response catches that
SuspiciousOperation, logs the message (good if you have logging turned on,
which many users do not), eats the exception and returns a 400 response
instead.
All the user sees is "400 Bad Request", no traceback and certainly not the
original and useful ValueError message.
--
Ticket URL: <https://code.djangoproject. com/ticket/21668>
Django <https://code.djangoproject. com/>
The Web framework for perfectionists with deadlines.
Django
12/25/13
Re:
[Django] #21668: Invalid upload_to FileField attribute results in
hard-to-debug "Bad Request" 400 error. (was: Invalid upload_to attribute
results in hard-to-debug "Bad Request" 400 error.)
#21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad
Request" 400 error.
------------------------------ -+---------------------------- ----------
Reporter: GDorn | Owner: nobody
Type: Bug | Status: new
Component: Uncategorized | Version: 1.6
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ -+---------------------------- ----------
Changes (by GDorn): * needs_better_patch: => 0
* needs_docs: => 0
* needs_tests: => 0
--
Ticket URL: <https://code.djangoproject. com/ticket/21668#comment:1>
Django <https://code.djangoproject. com/>
The Web framework for perfectionists with deadlines.
Django
12/25/13
Re: [Django] #21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad Request" 400 error.
#21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad
Request" 400 error.
------------------------------ -+---------------------------- ----------
Reporter: GDorn | Owner: nobody
Type: Bug | Status: new
Component: Uncategorized | Version: 1.6
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ -+---------------------------- ----------Comment (by anonymous):
Potentially related #19866
--
Ticket URL: <https://code.djangoproject. com/ticket/21668#comment:2>
Django <https://code.djangoproject. com/>
The Web framework for perfectionists with deadlines.
Django
3/16/14
Re: [Django] #21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad Request" 400 error.
#21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad
Request" 400 error.
------------------------------ -------+---------------------- ---------------
Reporter: GDorn | Owner: nobody
Type: | Status: new
Cleanup/optimization | Version: 1.6
Component: HTTP handling | Resolution:
Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ -------+---------------------- ---------------
Changes (by timo): * cc: timo (added)
* component: Uncategorized => HTTP handling
* type: Bug => Cleanup/optimization
Comment:
There may be some room for improvement here. How/why did you manage to
attempt to upload a file outside of `MEDIA_ROOT`?
--
Ticket URL: <https://code.djangoproject. com/ticket/21668#comment:3>
Django <https://code.djangoproject. com/>
The Web framework for perfectionists with deadlines.
Django
3/18/14
Re: [Django] #21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad Request" 400 error.
#21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad
Request" 400 error.
------------------------------ -------+---------------------- ---------------
Reporter: GDorn | Owner: nobody
Type: | Status: new
Cleanup/optimization | Version: 1.6
Component: HTTP handling | Resolution:
Severity: Normal | Triage Stage:
Keywords: | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ -------+---------------------- ---------------Comment (by GDorn):
I was attempting to simulate the upload as part of a unit test. As I
didn't want the test polluting my actual uploads directory, I was
attempting to use @override_settings to change the upload path. The
resulting error was very hard to diagnose.
--
Ticket URL: <https://code.djangoproject. com/ticket/21668#comment:4>
Django <https://code.djangoproject. com/>
The Web framework for perfectionists with deadlines.
Django
3/28/14
Re: [Django] #21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad Request" 400 error.
#21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad
Request" 400 error.
------------------------------ --------+--------------------- ---------------
Reporter: GDorn | Owner: nobody
Type: Cleanup/optimization | Status: new
Component: Documentation | Version: 1.6
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ --------+--------------------- ---------------
Changes (by timo): * component: HTTP handling => Documentation
* stage: Unreviewed => Accepted
Comment:
I think improving the documentation is the best way forward.
--
Ticket URL: <https://code.djangoproject. com/ticket/21668#comment:5>
Django <https://code.djangoproject. com/>
The Web framework for perfectionists with deadlines.
Django
5/18/14
Re: [Django] #21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad Request" 400 error.
#21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad
Request" 400 error.
------------------------------ -------+---------------------- ---------------
Reporter: GDorn | Owner:
Type: | anubhav9042
Cleanup/optimization | Status: assigned
Component: Documentation | Version: 1.6
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ -------+---------------------- ---------------
Changes (by anubhav9042): * status: new => assigned
* owner: nobody => anubhav9042
Comment:
Working on this in my GSoC project.
--
Ticket URL: <https://code.djangoproject. com/ticket/21668#comment:6>
Django <https://code.djangoproject. com/>
The Web framework for perfectionists with deadlines.
Django
5/26/14
Re: [Django] #21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad Request" 400 error.
#21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad
Request" 400 error.
------------------------------ -------+---------------------- ---------------
Reporter: GDorn | Owner:
Type: | anubhav9042
Cleanup/optimization | Status: assigned
Component: Documentation | Version: 1.6
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ -------+---------------------- ---------------Comment (by timo):
Actually, it appears that this raised a more informative error message in
Django 1.3 (see #22706). We should see if that's possible to restore.
--
Ticket URL: <https://code.djangoproject. com/ticket/21668#comment:7>
Django <https://code.djangoproject. com/>
The Web framework for perfectionists with deadlines.
Django
6/17/14
Re: [Django] #21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad Request" 400 error.
#21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad
Request" 400 error.
------------------------------ -------+---------------------- ---------------
Reporter: GDorn | Owner:
Type: | anubhav9042
Cleanup/optimization | Status: assigned
Component: Documentation | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ -------+---------------------- ---------------
Changes (by anubhav9042): * version: 1.6 => master
Comment:
Since this appears to be a problem in not getting the correct message, I
am going to fix this alongwith #22058.
--
Ticket URL: <https://code.djangoproject. com/ticket/21668#comment:8>
Django <https://code.djangoproject. com/>
The Web framework for perfectionists with deadlines.
Django
6/23/14
Re: [Django] #21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad Request" 400 error.
#21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad
Request" 400 error.
------------------------------ -------+---------------------- ---------------
Reporter: GDorn | Owner:
Type: | anubhav9042
Cleanup/optimization | Status: assigned
Component: Documentation | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ -------+---------------------- ---------------Comment (by timo):
This regressed in 1.6 with this commit:
https://github.com/django/ django/commit/ d228c1192ed59ab0114d9eba82ac99 df611652d2
#diff- dbd7d9159676b15fc9a096b0adb919 e9R173
I think we should consider returning a `technical_500_response` in the
handling of `SuspiciousOperation` as we did before if `settings.DEBUG is
True` rather than invoking `handler400`.
--
Ticket URL: <https://code.djangoproject. com/ticket/21668#comment:9>
Django <https://code.djangoproject. com/>
The Web framework for perfectionists with deadlines.
Django
6/24/14
Re: [Django] #21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad Request" 400 error.
#21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad
Request" 400 error.
------------------------------ -------+---------------------- ---------------
Reporter: GDorn | Owner:
Type: | anubhav9042
Cleanup/optimization | Status: assigned
Component: Documentation | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ -------+---------------------- ---------------Comment (by timo):
Yes, that's the idea. Please add a test. A mention in the release notes
also wouldn't hurt. I'd also consider adding a `status_code` kwarg to
`technical_500_response` so we can continue returning a `400` in this
case.
--
Ticket URL: <https://code.djangoproject. com/ticket/21668#comment:10>
Django <https://code.djangoproject. com/>
The Web framework for perfectionists with deadlines.
Django
6/24/14
Re: [Django] #21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad Request" 400 error.
#21668: Invalid upload_to FileField attribute results in hard-to-debug "Bad
Request" 400 error.
------------------------------ -------+---------------------- ---------------
Reporter: GDorn | Owner:
Type: | anubhav9042
Cleanup/optimization | Status: closed
Component: Documentation | Version: master
Severity: Normal | Resolution: fixed
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------ -------+---------------------- ---------------
Changes (by Tim Graham ): * status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:" dbbcfca476e29354c3a5c6221112b5 5741babc14"]:
{{{
#!CommitTicketReference repository=""
revision=" dbbcfca476e29354c3a5c6221112b5 5741babc14"
Fixed #21668 -- Return detailed error page when SuspiciousOperation is
raised and DEBUG=True
Thanks GDorn and gox21 for report.
Thanks Tim Graham for idea and review.
}}}
--
Ticket URL: <https://code.djangoproject. com/ticket/21668#comment:11>
No comments:
Post a Comment