Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何使用FileField在文件中正确保存编辑的内容?_Django - Fatal编程技术网

Django 如何使用FileField在文件中正确保存编辑的内容?

Django 如何使用FileField在文件中正确保存编辑的内容?,django,Django,我尝试在textarea中显示文本(.txt)文件的内容,并在编辑后保存它 如何正确保存已编辑的文件 型号: class FileDb(models.Model): source = models.FileField(upload_to="source") 观点: def single_file(request,id): file = FileDb.objects.get(id=id) filename = file.source.read() #save ed

我尝试在
textarea
中显示文本(.txt)文件的内容,并在编辑后保存它

如何正确保存已编辑的文件

型号:

class FileDb(models.Model):
    source = models.FileField(upload_to="source")
观点:

def single_file(request,id):
    file = FileDb.objects.get(id=id)
    filename = file.source.read()
    #save edited file:
    if request.method == "POST":
        content = request.POST['content']
        file.source = content
        file.save()


    return render_to_response('single_file.html',{'file':file,'filename':filename},context_instance=RequestContext(request))
模板:

<form method="POST">{% csrf_token %}
    <textarea name="content">{{filename}}</textarea>
    <input type="submit" value="Save changes">
</form>
{%csrf\u令牌%}
{{filename}}

您只是不需要将
字符串
分配到
文件字段

file.source = content
您必须像这样将内容写入文件:

if request.method == "POST":
        from django.core.files import File
        f = open(file.source.path, 'w')
        content = request.POST['content']
        f.write(content)
        f = File(f)
        file.source = f
        file.save()

希望这有帮助

不清楚你的问题是什么。这个代码有效吗?你有错误吗?或者它运行但不保存?@sail它不保存谢谢
file.source.write(content)
在这一行中,我有:
文件未打开进行写入
可能最后3行是不必要的,因为您只是在编辑文件的内容