将文件传递到另一个视图

时间:2015-12-09 14:52:51

标签: python django python-3.x

我试图创建一个可以上传文件的应用程序,然后对其内容进行一些修改,然后下载它。我遇到的问题是:

型号:

    <% for (var i in sqTweetData) { %>
        <% if (sqTweetData.hasOwnProperty(i)) { %>
            <div class="activeTweet">
                <div class="activeTweet__avatar"><img src="<%= sqTweetData.user.profile_image_url %>"></div>
                <div class="activeTweet__wrapper">
                    <div class="activeTweet__name"><%= sqTweetData.user.name %></div>
                    <div class="activeTweet__message"><%= sqTweetData.text %></div>
                </div>
            </div>
        <% } %>
    <% } %>

第一个视图应该通过表单接收上传的文件并用它初始化一个Subtitles对象,然后它应该将这个对象传递给第二个视图,它将获得line_A,line_B,line_C。

我曾尝试使用会话来执行此操作:

class Subtitles(models.Model):

file = models.FileField()
line_A = models.CharField(max_length=255, blank=True)
line_B = models.CharField(max_length=255, blank=True)
line_C = models.CharField(max_length=255, blank=True)

但是当我尝试request.session.get(&#39; new_sub&#39;,None)时,它返回一个错误,指出对象无法序列化

我也考虑在第一个视图中将它保存到数据库中,然后在第二个视图中将其保存回来,但这意味着我必须在创建它时才能获得实例的pk在第二个视图中访问它。我能想到的唯一方法是如何获取保存到db的最后一个文件,这是唯一的方法吗?

由于文件是.txt,我也可以在第一个视图中读取它的内容并将其作为字符串放入reqest.session中,但它似乎不正确

解决这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您需要结合您的解决方案。在第一个视图中将其保存到数据库,将pk添加到会话,在第二个视图中从会话中获取pk并从数据库加载对象。