如何将文本输入保存为 HTML 和 Django 中的文件
Posted
技术标签:
【中文标题】如何将文本输入保存为 HTML 和 Django 中的文件【英文标题】:How to save text input as a file in HTML and Django 【发布时间】:2012-07-19 21:08:38 【问题描述】:我正在构建一个站点,用户可以在其中输入文本并提交文本,以便可以将其保存为服务器上的文件并进行访问。不幸的是,我不太确定如何获取输入的文本并将其保存为文件。
谁能指出我如何做到这一点的正确方向或详细说明我必须采取的步骤?如果我错过了一个明显的谷歌结果,抢先式道歉。作为 Django 的新手,我可能无意中忽略了有用的资源。
这是相关的 html,主要是从文件上传表单复制的表单:
<form name="myWebForm" id="submissionCode_codeEditor" action="uploadFile/" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="500" />
<input type="text" name="title" placeholder="File Name"/>
<input type="hidden" name="taskID" value= taskID />
<input type="submit" value="Submit This Code" />
</form>
这里是相关的 Django 模型:
class Upload(models.Model):
title = models.CharField(max_length=50)
fileUpload = models.FileField(upload_to='file_uploads')
userID = models.ForeignKey(User)
task = models.ForeignKey(Task)
uploadTime = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.title
【问题讨论】:
你熟悉 django forms 或 modelforms 吗? 我有点熟悉。我为文件上传系统设置了它们 【参考方案1】:您正在寻找ContentFile
。这是一个 Django File
子类,它使用文本字符串而不是文字文件进行实例化。然后您可以将ContentFile
保存到您的FileField
。
from django.core.files.base import ContentFile
content = ContentFile(some_text)
upload_instance.fileUpload.save('/path/to/where/file/should/save.txt', content)
upload_instance.save()
【讨论】:
我有点卡住了。如何将输入的字符串链接到 ContentFile?我想在您的示例中的“some_text”参数和应该在我的 textarea 中的一些 html 属性之间有一些联系。或者我需要引用这些东西是错的,因为 Django 免费提供了该功能? 如果信息来自表单,那么some_text
将类似于request.POST['my_text_field_name']
。不过,您应该在将用户提交的任何内容实际保存到文件系统之前对其进行清理。
感谢您的警告。我会确保解决这个问题。【参考方案2】:
首先使用命令在您的媒体文件夹中创建一个文件,我假设用户发布了带有名称内容的文本
from app.models import Upload
from django.conf import settings
content = request.GET("content")
file_object = open("%s/%s"%(settings.MEDIA_ROOT, filename),w) #Take file name as hash of content posted and username so that no class
upload = Upload(title=title, fileUpload=filename,user_id=request.user.id)
您的文件已上传,可以使用设置中的 MEDIA_URL 访问
【讨论】:
除了 Chris Pratt 的回答之外,我还会添加这些内容吗?还是这是另一种方法? 没有 chris 方法与仅上传文件不同。我考虑过更新你的模型输入。以上是关于如何将文本输入保存为 HTML 和 Django 中的文件的主要内容,如果未能解决你的问题,请参考以下文章
Django admin 将 HTML 实体转换为它们的字符
如何使用Django.db.models Q模块查询多行用户输入文本数据