【问题标题】:Reading and Writing to PDFs stored in Django Models.py读取和写入存储在 Django Models.py 中的 PDF
【发布时间】:2020-04-12 22:57:21
【问题描述】:

我可以将 PDF 存储在 ImageField 下的 Django Models.py 中吗? Documentation 似乎很少提及 PDF。我正在考虑尝试以下方式:

from django.db import models

class Model(models.Model):
    text = models.CharField(max_length=30, unique=False)
    pdf = models.ImageField(upload_to='media/pdfs')

具有如下结构的 form.py:

from django import forms
from model.models import Model

class textForm(forms.ModelForm):
    class Meta:
        model = Model
        fields = ('text',)

使用如下结构的 Views.py:

def user_view(request):
    text = form.cleaned_data.get('text')
    can.drawString(10, 100, Model.text)

    existing_pdf = PdfFileReader(open("media/01.pdf", "rb"))
    page = existing_pdf.getPage(0)
    page.mergePage(new_pdf.getPage(0))
    PdfFileWriter().addPage(page)

    return render(request, "app/fill_form.html", context)

【问题讨论】:

    标签: python django django-models django-forms django-views


    【解决方案1】:

    试试 models.FileField https://docs.djangoproject.com/en/3.0/topics/http/file-uploads/

    这是来自文档的 sn-p

    from django.http import HttpResponseRedirect
    from django.shortcuts import render
    from .forms import ModelFormWithFileField
    
    def upload_file(request):
        if request.method == 'POST':
            form = ModelFormWithFileField(request.POST, request.FILES)
            if form.is_valid():
                # file is saved
                form.save()
                return HttpResponseRedirect('/success/url/')
        else:
            form = ModelFormWithFileField()
        return render(request, 'upload.html', {'form': form})
    

    如果您需要从视图访问上传的文件,它们将在

    requests.FILES 
    

    要返回 pdf 作为视图,您可以关注此帖子 How to show a PDF file in a Django view?

    def pdf_view(request):
        with open('/path/to/my/file.pdf', 'r') as pdf:
            response = HttpResponse(pdf.read(), mimetype='application/pdf')
            response['Content-Disposition'] = 'inline;filename=some_file.pdf'
            return response
        pdf.closed
    

    如果您的模型中有 pdf,您可以在模型上添加一个 editPDF 函数,该函数可以按照您正在执行的方式添加所选文本(假设可以正常工作)并保存 pdf。

    【讨论】:

    • 感谢您的回答速度,我花了一段时间才完全阅读您分享的材料。我很好奇,您能否进一步详细说明您最后提到的模型中的editPDF功能?我从来没有见过这样的例子。
    猜你喜欢
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多