如何显示需要最小文件上传的上传文件大小django示例

时间:2015-06-08 05:46:16

标签: html django

我需要在我的html代码中显示文件大小以及视图和模型的更改。请帮助我这样做。

views.py 这是我的视图代码。在上传时更改显示文件大小

 def index(request):

    response = TemplateResponse(request, 'login.html', {})
    return response

 def login(request, username, password):
    user = username[:-1]


    for i in AppUser.objects.all():
        if ( user == i.username and password == i.password ):
            return list(request)
        else:
             return index(request)

  def list(request):
   # Handle file upload
         print "im getting in"

         if request.method == 'POST':
           form = DocumentForm(request.POST, request.FILES)
           if form.is_valid():
              newdoc = Document(docfile = request.FILES['docfile'],created_at = datetime.datetime.now())
              newdoc.save()

        # Redirect to the document list after POST
            return   HttpResponseRedirect(reverse('cloudStorageManager.views.list'))

          else:
             print "else"
            form = DocumentForm() # A empty, unbound form

            # Load documents for the list page
            documents = Document.objects.all()

           # Render list page with the documents and the form
              return render_to_response('list.html',{'documents': documents, 'form': form, 'created_at': datetime.datetime.now()},context_instance=RequestContext(request))

models.py 显示文件大小的属性

  class Document(models.Model):
     docfile = models.FileField(upload_to='documents')
     created_at=models.DateTimeField(auto_now_add=True , blank=True)

list.html 用于在上传时显示文件大小的HTML代码

        {% for document in documents %}
                    <tr>
                    <td>
                        <input type="checkbox" class="case" id="chk{{forloop.counter}}" value="{{ document.docfile.name }}">
                    </td>
                    <td>{{ document.docfile.name }}  {{ document.created_at }}</td>
                    <td><a href="{{ document.docfile.url }}"   target="_blank" title="Download"><button class="btn btn-success btn-flat"><span class="glyphicon glyphicon-cloud-download">          </span>&nbsp;&nbsp;Download</button></a></td>
                    <td>

2 个答案:

答案 0 :(得分:0)

{{ document.docfile.size |filesizeformat}}

Docs了解文件大小。 Docs用于filesizeformat过滤器。

答案 1 :(得分:0)

您可以知道form.py文件中的大小并验证上传的文件。

class DOcumentForm(...):
    ...
    docfile = forms.FileField(...)
    ...

    def clean_docfile(self):
        current_size = self.cleaned_data['docfile'].size
        if current_size < 2621440 # size in bytes:
            return self.cleaned_data['docfile']
        else:
            raise forms.ValidationError('Max 2.5 MB allowed. Current size is {0}'.format(current_size))