database - Django 设计 : storing and retrieving text files

标签 database django text storage

在我的应用程序中,我有一个脚本,绑定(bind)到按钮的 onclick 事件,动态生成一个文本文件。这些文件不是太大(约 3000 行),但数据的流入速度可能很慢(有时需要 30 分钟才能捕获所有流数据)。该过程完成后,我需要存储此文件,以便用户可以下载它。我还将拥有从此点击事件的先前实例生成的文本文件,并且需要区分它们。

解决这个问题的最佳方法是什么?我可以将这种大小的文本文件存储在数据库中,然后检索它吗?我是否应该只存储其他地方存在的文本文件的路径,但在那种情况下,它将存储在哪里以及如何检索它? 如果存储在数据库中,主键是否足以拉取我想要的文本文件?

谢谢!

最佳答案

如果您希望能够搜索这些文件的内容,那么将它们存储在数据库中并不是一个糟糕的主意,否则您可能应该将它们存储在文件系统中。

无论哪种情况,您都希望创建一个模型来保存有关文件的信息:

class TextFile(models.Model):
    user = models.ForeignKey(User, related_name='text_files')

    # if storing in database
    content = models.TextField() 

    # if storing in filesystem
    content = models.FileField(storage=FileSystemStorage(location='/path/to/files'))

然后您可以像这样查看特定用户的文件列表:

@login_required
def file_list(request):
    files = TextFile.objects.filter(request.user)
    return render(request, 'file_list.html', {'files': files})

以及提供文件本身的 View :

@login_required
def servr_file(request, file_id):
    file = get_object_or_404(TextFile, user=request.user, pk=file_id)

    # if storing in database
    return HttpResponse(file.content)

    # if storing in filesystem
    return HttpResponse(file.content.read())

关于database - Django 设计 : storing and retrieving text files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24655680/

相关文章:

python - 如何在 SQL 中找到时间戳中的间隙(对于数据抓取器)

python - Django:我的表单没有持久保存在数据库中

python - 管理子域

c# - SQL WHERE 子句匹配带有尾随空格的值

php - 关于在数据库之间实现PHP对象的建议

Django 信号发出一次,收到两次——为什么?

Django 中的 Javascript 驱动表单

javascript - 从外部链接每 5 秒更改一次文本

javascript - 删除 js 变量中 ( 和 ) 之间的文本

text - 将分组的文本行复制并粘贴到另一个文件中的优雅方法