【问题标题】:TypeError when open object of django filefield打开 django 文件字段的对象时出现类型错误
【发布时间】:2017-03-14 18:07:26
【问题描述】:

我想制作一个名为“count”的按钮来计算上传的 pdf 文件的页数。但是,有 TypeError 无效文件:

如何改进我的代码来解决这个错误...?

附言。我是使用 django 1.10 编码的新手,只想制作一些小工具让我的生活更轻松:)

提前致谢

我的模特

from django.db import models
from PyPDF2 import PdfFileReader

class PdfFile(models.Model):
    file = models.FileField(upload_to='document/')
    num_of_pages = models.IntegerField(null=True)

    def page_count(self):
        pdf = PdfFileReader(open(self.file, 'rb'))
        self.num_of_pages = pdf.getNumPages()
        self.save()

我的观点

def count(request, pk):
    pdf = get_object_or_404(PdfFile, pk=pk)
    pdf.page_count()
    return redirect('img_preview', pk=pk)

【问题讨论】:

    标签: python django upload filefield


    【解决方案1】:

    您不能将文件字段值直接传递给open。然而,正如the documentation 所示,该对象本身有一个open 方法:

    pdf = PdfFileReader(self.file.open())
    

    由于该类还定义了read__iter__,您实际上可以直接传递该字段:

    pdf = PdfFileReader(self.file)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-11
      • 2012-05-23
      • 2015-12-18
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多