首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django -模型:保存文件

Django -模型:保存文件
EN

Stack Overflow用户
提问于 2015-01-22 19:05:56
回答 2查看 708关注 0票数 0

我正在尝试制作一个django-ajax上传器来创建一个模型。我已经创建了一个示例,但我无法理解是否需要使用import_uploader或创建一个简单的类来保存带有文件的模型。如果我这样做,我不知道AJAX操作是否会被禁用。

urls.py

代码语言:javascript
复制
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()
urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'bft.views.home', name='home'),
    # url(r'^bft/', include('bft.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
    url(r'start$', 'bbb.views.start', name="start"),
    url(r'ajax-upload$', 'bbb.views.import_uploader', name="my_ajax_upload"),
)

views.py

代码语言:javascript
复制
from django.middleware.csrf import get_token
from django.shortcuts import render_to_response
from django.template import RequestContext
from ajaxuploader.views import AjaxFileUploader

def start(request):
    csrf_token = get_token(request)
    return render_to_response('import.html',
        {'csrf_token': csrf_token}, context_instance = RequestContext(request))

import_uploader = AjaxFileUploader()
# Create your views here.

import.html

代码语言:javascript
复制
 <!doctype html>
        <head>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" ></script>
            <script src="{{ STATIC_URL }}ajaxuploader/js/fileuploader.js" ></script>
            <link href="{{ STATIC_URL }}ajaxuploader/css/fileuploader.css" media="screen" rel="stylesheet" type="text/c$
            <script>
                $(function(){
                var uploader = new qq.FileUploader({
                    action: "/ajax-upload",
                    element: $('#file-uploader')[0],
                    multiple: true,
                    onComplete: function(id, fileName, responseJSON) {
                        if(responseJSON.success) {
                            alert("success!");
                        } else {
                            alert("upload failed!");
                        }
                    },
                    onAllComplete: function(uploads) {
                        // uploads is an array of maps
                        // the maps look like this: {file: FileObject, response: JSONServerResponse}
                        alert("All complete!");
                    },
                    params: {
                        'csrf_token': '{{ csrf_token }}',
                        'csrf_name': 'csrfmiddlewaretoken',
                        'csrf_xname': 'X-CSRFToken',
                    },
                });
                });
            </script>
        </head>
    <body>
        <div id="file-uploader">
            <noscript>
                <p>Please enable JavaScript to use file uploader.</p>
            </noscript>
        </div>
    </body>
    </html>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-22 19:21:27

包中提供的信号功能就是答案,谢谢!

票数 0
EN

Stack Overflow用户

发布于 2015-01-22 20:33:29

首先,我建议您使用模型FILEFIELD创建一个模型来存储文件的信息和url:

设置您的媒体文件,文件将在何时存储Setting.py

代码语言:javascript
复制
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'

models.py

代码语言:javascript
复制
from django.core.files.storage import default_storage
...

class UploadFile(models.Model):
      file = models.FileField(upload_to='docs/')

Forms.py:

代码语言:javascript
复制
class UploadForm(forms.ModelForm):
    documento = forms.FileField(label='Seleccione un archivo',
                                help_text='Max Size 2mb'
                               )
    class Meta:
       model = UploadFile

views.py:

代码语言:javascript
复制
def UploadView(request):
    if request.method == 'POST':
       form = UploadForm(request.POST,request.FILES)
       if form.is_valid():
          form.save()
          return HttpResponseRedirect('/index/')
    else:
       form = DocuForm()
    return render_to_response("yourtemplate.html",
                              {'form':form},
                              context_instance=RequestContext(request))

我在一个表中显示文档列表,其中可以单击文件的名称并下载它。如果要启用文件的下载,请以这种方式更改您的urls.py:

代码语言:javascript
复制
urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'kp.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),
    url(r'^upload/$', 'kms.views.UploadView', name='upload'),
)+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28096737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档