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

2024-05-28 23:39:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在django创建了一个网站,主要使用一些简单的应用程序让一小队用户添加事件,管理显示上传文件的页面等。最复杂的部分是每个用户都有一个主页,其中的内容可以通过一个标记字段(我使用的是https://github.com/jamesturk/django-markupfield)来管理自己,再加上一系列子页面的内容,他们也控制。你知道吗

我的问题是如何让他们上传图片和文件,并很容易在他们的网页上引用这些,以便包括图片或创建一个链接到文件。上传是好的,如果你知道ImageField把图像/文件放在哪里,那么图像/文件就可以被静态引用,但是理想情况下,用户不必知道django实际存储文件的位置或者静态服务的来源。到目前为止,我最好的想法是:

  1. 用UserPage作为ForeignKey创建一个文件/图像上传模型
  2. 允许用户为每个页面上载任意数量的图像或文件
  3. 修改MarkupField以首先解析文本,并用引用的imagefield实际存储它的正确静态url替换一些新语法(例如,类似于“&;IMAGE\u 1”的语法以引用与页面关联的第一个上载图像)。你知道吗

这样做的缺点是,我正在发明自己的一小块语法,并且必须可靠地解析它。这应该不会太难,但是有没有一个现有的方法来完成同样的事情,或者一个值得考虑的替代方法?我不确定在django框架中是否缺少一种更自然的方法。你知道吗


Tags: 文件django方法用户图像应用程序内容网站
1条回答
网友
1楼 · 发布于 2024-05-28 23:39:31

听起来你开了个好头。你知道吗

有些事情听起来你可能没有意识到:

  • FileField及其子类ImageField具有.url属性。你知道吗
  • 如果您想保持MarkupField的风格,可以使用override the model's save()方法添加额外的语法。你知道吗

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

所以我们的想法是:

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

在jquery中文件准备就绪功能,以及

{% 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中。你知道吗

请询问您是否需要对此进行澄清。你知道吗

相关问题 更多 >

    热门问题