gpt4 book ai didi

python - 将文本区域的内容保存到 Django 1.6 中的 FileField

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:54 24 4
gpt4 key购买 nike

最近我的 django 项目遇到了一个奇怪的问题,我想与你分享这个问题。好吧,在我的项目中,我想让用户能够更新他之前上传的文本文件的内容,为此,我考虑将文件的内容复制到文本区域,修改将在其中进行,提交修改后,更新文件。事实上,我在这个论坛中找到了这个解决方案,它保存更新但保存到另一条路径!这是建议的解决方案:

views.py:

 def update_file(request, id):
file = UploadedFile.objects.get(pk=id)
if request.method == "POST":
from django.core.files import File
f = open(file.docfile.path,'w+b')
content = request.POST['content']
f.write(content)
file.docfile = File(f)
file.save()
return HttpResponseRedirect('/home/')
else:
docfile = file.docfile.read()
return render_to_response('update_file.html',{'file':file, 'docfile' :
docfile}, context_instance=RequestContext(request))

更新文件.html:

<form action="/update_file/{{file.id}}/" method="post" enctype="multipart/form-data"> 
{% csrf_token %}
<p><textarea name="content">
{{docfile}}
</textarea></p>
<p><input type="submit" value="Enregistrer"/></p>
</form>

当我运行此代码时,我在屏幕上打印文本,正常更新它,并将其保存回数据库,但在不同的路径中,例如,包含文件的路径是:“media/documents/username/”,但修改文件后,它将保存在目录下:“documents/username//home/Ubuntu-user/file_sharing_project/file_sharing_project/media/documents/username/”,因此路径以递归方式更改!关于这个问题的任何线索,并且作为记录,我一般只是 django 和 python 的初学者!

最佳答案

如果您查看https://docs.djangoproject.com/en/dev/ref/files/file/处的文档它说它不会替换文件,而是创建一个新文件。

所以你可以在这里采取一些方法,销毁旧文件即可创建新文件。

或者只是保存所有内容,用户可能还想在某个时间看到旧版本。

而且您可能需要考虑在完成文件后关闭文件。

关于python - 将文本区域的内容保存到 Django 1.6 中的 FileField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21393805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com