在我的应用程序中,我有一个脚本,绑定(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/