
Research
Security News
Lazarus Strikes npm Again with New Wave of Malicious Packages
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Django-JFU is designed to simplify the tasks involved in integrating jQuery File Upload (https://github.com/blueimp/jquery-file-upload) into Django. Django-JFU assumes very little and leaves the model/view design up to the user.
Other Django - jQuery File Upload implementations are full-featured but generally serve more as demonstrations than libraries for existing applications.
If you seek a tool to ease the integration of jQuery File Upload into your Django application while still having a great degree of freedom, you may find this package useful.
Demo_
.. _Demo: http://djfu-demo.cidola.com
pip install django-jfu
.INSTALLED_APPS
in your project settings.py file.TEMPLATE_CONTEXT_PROCESSORS
in settings.py.python manage.py collectstatic
.Django-JFU provides simple customizable template tags and override-able templates that do the work of integrating the jQuery File Upload CSS and JavaScipt and the HTML implementation found in the jQuery File Upload demo.
To place the jQuery File Upload widget in a template, simply insert the following within it::
{% load jfutags %}
{% jfu %}
Then create a view that will handle the uploaded files. The URL for the view is expected to be named 'jfu_upload' by default, although this can be customized (see Customization below).
Here is an example implementation:
In your urls.py
file::
...
url( r'upload/', views.upload, name = 'jfu_upload' ),
# You may optionally define a delete url as well
url( r'^delete/(?P<pk>\d+)$', views.upload_delete, name = 'jfu_delete' ),
In your views.py
file::
import os
from django.conf import settings
from django.urls import reverse
from django.views import generic
from django.views.decorators.http import require_POST
from jfu.http import upload_receive, UploadResponse, JFUResponse
from YOURAPP.models import YOURMODEL
@require_POST
def upload( request ):
# The assumption here is that jQuery File Upload
# has been configured to send files one at a time.
# If multiple files can be uploaded simulatenously,
# 'file' may be a list of files.
file = upload_receive( request )
instance = YOURMODEL( file = file )
instance.save()
basename = os.path.basename( instance.file.path )
file_dict = {
'name' : basename,
'size' : file.size,
'url': settings.MEDIA_URL + basename,
'thumbnailUrl': settings.MEDIA_URL + basename,
'deleteUrl': reverse('jfu_delete', kwargs = { 'pk': instance.pk }),
'deleteType': 'POST',
}
return UploadResponse( request, file_dict )
@require_POST
def upload_delete( request, pk ):
success = True
try:
instance = YOURMODEL.objects.get( pk = pk )
os.unlink( instance.file.path )
instance.delete()
except YOURMODEL.DoesNotExist:
success = False
return JFUResponse( request, success )
Django-JFU is designed to be very customizable.
The Django-JFU template tag optionally takes two arguments: the name of the template to load and the name of the URL pointing to the upload-handling view.::
{% load jfutags %}
{% jfu 'your_fileuploader.html' 'your_uploader_URL_name' %}
A custom template can extend from the master Django-JFU template
jfu/upload_form.html
. There are several blocks which may be overriden for
the purpose of customization:
fileupload
function.The blocks above are most-likely what you will want to override when seeking to customize. For instance, one would go about adding a few options to the fileupload function in this manner::
# your_fileuploader.html
{% extends 'jfu/upload_form.html' %}
{% block JS_OPTS %}
autoUpload: true,
maxNumberOfFiles: 5,
sequentialUploads: true,
{% endblock %}
There are several other blocks too:
MODAL_GALLERY - The modal gallery
UPLOAD_FORM - The file upload form used as target for the file upload widget.
UPLOAD_FORM_LISTING - The table listing the files available for upload/download.
UPLOAD_FORM_LINDICATOR - The loading indicator shown during file processing.
UPLOAD_FORM_PROGRESS_BAR - The global progress information.
UPLOAD_FORM_BUTTON_BAR - The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload.
UPLOAD_FORM_EXTRA - An empty block allowing the addition of extra components.
CSS
JS_TEMPLATES
JS_DOWNLOAD_TEMPLATE
JS_UPLOAD_TEMPLATE
JS_SCRIPTS
The included JavaScript and CSS can be updated or suppressed by overriding these blocks ::
# your_fileuploader.html
{% extends 'jfu/upload_form.html' %}
{% block JS_JQUERY %}
<script src={{STATIC_URL}}/js/my.newer.jquery.js />
{% endblock %}
{% block CSS_BOOTSTRAP %}
{% comment %}
This is already included.
{% endcomment %}
{% endblock %}
or by replacing the static files themselves.
If you have downloaded from the repository, a simple demo application has been included in the 'demo' directory. To test it out, enter the 'demo' directory and run ::
./setup && ./run
Note that virtualenv is required for the demo to function.
Django-JFU is wholly open source and welcomes contributions of any kind. Feel free to either extend it, report bugs, or provide suggestions for improvements. The author of Django-JFU can be contacted at alem@cidola.com.
FAQs
A Django Library for jQuery File Upload.
We found that django-jfu-pyforms demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.
Security News
Opengrep continues building momentum with the alpha release of its Playground tool, demonstrating the project's rapid evolution just two months after its initial launch.