gpt4 book ai didi

python - 如何让用户在 CharField 中引用他们上传的文件?

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:02 24 4
gpt4 key购买 nike

我在 Django 中创建了一个网站,它主要利用一些简单的应用程序让一小群用户添加事件、管理显示上传文件的页面等。最复杂的部分是每个用户都有一个包含内容的主页他们可以通过 MarkupField 管理自己(我使用的是来自 https://github.com/jamesturk/django-markupfield 的那个),以及一系列他们也控制其内容的子页面。

我的问题是如何让他们上传图片和文件,并轻松地在他们的页面上引用这些内容以包含图片或创建指向文件的链接。上传很好,如果您知道 ImageField 将它们放在哪里,则可以静态引用图像/文件,但理想情况下,用户不必知道 django 实际存储文件的位置或静态提供文件的位置.到目前为止,我最好的想法是:

  1. 使用 UserPage 作为外键创建文件/图片上传模型
  2. 允许用户为每个页面上传任意数量的图片或文件
  3. 修改 MarkupField 以首先解析文本并用正确的静态 URL 替换一些新语法(例如,类似于“&&IMAGE_1”以引用与页面关联的第一张上传图像),用于引用图像字段实际存储它的位置。<

这样做的缺点是我正在发明自己的一小段语法并且必须可靠地解析它。这应该不会太难,但是是否有现有的方法可以完成同样的事情,或者是否有值得考虑的替代方法?我不确定我是否至少缺少一种在 django 框架内执行此操作的更自然的方法。

最佳答案

听起来您的开端不错。

一些听起来您可能不知道的事情:

  • FileField 及其子类 ImageField 有一个 .url属性(property)。
  • 如果你想保留你的 MarkupField vanilla,你可以 override the model's save()添加额外语法的方法。

我的解决方案是让您的模板返回一个设置了 javascript 的图像列表,以便向用户显示他的图像列表,并且可以单击一个图像将其添加到她正在写的内容中。我喜欢用 jquery对于这种事情,但你也可以用纯 javascript 来做。当他们单击“添加图像”按钮时,您的列表可能会出现,当他们开始输入图像添加语法时会自动出现,或两者兼而有之。我还会自动生成缩略图并将 .thumbUrl 添加到模型中,以便用户可以从缩略图中选择图像。

所以这个想法是沿着:

function addImgMarkup(imgUrl){
$('#idOfMarkupTextFormField').val($('#idOfMarkupTextFormField').val()
+ 'imageSyntax' + imgUrl); }

在 jquery document.ready 函数中,和

{% for uplImg in UserPage.uploaded_image__set.all %}
<a href="#" onclick="addImgMarkup({{uplImg.url}})">
<img src="{{uplImg.thumbUrl}}" alt="{{uplImg.name}}"></img>
</a>
{% endfor %}

在 html 中。

请询问您是否需要对此进行澄清。

关于python - 如何让用户在 CharField 中引用他们上传的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17015297/

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