为特定用户保存.docx文件Django

2024-06-09 16:12:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用django中的用户输入创建一个docx文件。目前,当点击submit按钮时,会生成下载链接,用户可以下载文件。但是,我想将文件保存在文件存储中,并创建一个模板,用户可以在其中查看他过去创建的所有docx文件(或超链接)。“有点像数据库”

models.py

class Timetables(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,
                             default=1, related_name='timetables_files', null=True)
    timetable_files = models.FileField(
        null=True, blank=True, upload_to='word_documents')

views.py

def school_view(request):
        if request.method == 'POST':
        worddocument = docx.Document()
        documenttitle = worddocument.add_heading(
            school_name_view.title(), 0)
        file = io.BytesIO()
        worddocument.save(file)
        response = HttpResponse(
            content_type='application/vnd.openxmlformats- 
            officedocument.wordprocessingml.document')
        response['Content-Disposition'] = 'attachment; filename =quicktimetable.docx'
        worddocument.save(response)
        path = join(settings.MEDIA_ROOT, 'word_documents',
                    'quicktimetable.
        file = open(path, 'w+b')
        return response

class TimetablesView(ListView):
    model = Timetables
    template_name = 'quickmain/timetables_list.html'

timetables\u list.html

{% if user.is_authenticated %}
{% for f in files %}
{{ f.files.url }}
{% endfor %}
{% for  timetable_files in user.timetables_files.all %}
     <embed src = "{{timetable_files.timetable_files.url}}" target="__blank">
{% endfor %}
{% else %}

如何保存生成的文件并在不同的模板上显示与该用户相关的所有文件。 我的models.py中有一个文件字段,但不知道如何使用它。我得到一个建议,每当用户要求重新生成文件,但我也不知道这一点


Tags: 文件用户namepy模板truemodelsresponse
1条回答
网友
1楼 · 发布于 2024-06-09 16:12:28

您必须在文件和用户模型之间创建关系。 实例 在您的型号中

class DocxFile(models.Model):
 user = models.ForiegnKey(User)      #your user model name
 file = models.FileField('upload_to='/')

然后在您的视图中

from yourappname.models import DocxFile
    def docs_file(request):
    files = DocxFile.object.filter(user=request.user)
    return render('your template path', {'files':files})

在模板中

{% for f in files%}

{{f.file.url}}

{% endfor %} 

相关问题 更多 >