我在django中创建了一个网站,它主要利用一些简单的应用程序让一小组用户添加事件,管理显示上传文件的页面等。最复杂的部分是每个用户都有一个包含内容的主页他们可以通过MarkupField管理自己(我正在使用https://github.com/jamesturk/django-markupfield中的那个),还有一系列子页面,他们也控制着它们。
我的问题是如何让他们上传图片和文件,并轻松地在他们的页面上引用这些图像和文件,以便包含图像或创建文件的链接。上传很好,如果您知道ImageField放置它们的位置,则可以静态引用图像/文件,但理想情况下,用户不必知道django实际存储文件的位置或静态服务的位置。 。到目前为止,我最好的想法是:
这样做的缺点是我正在发明我自己的一小段语法,并且必须可靠地解析它。这不应该太困难,但有没有现成的方法来完成同样的事情,或者另一种值得考虑的方法?我不确定我是否可能在django框架中至少以一种更自然的方式去做它。
答案 0 :(得分:1)
听起来你的起步很好。
听起来你可能没有注意到的一些事情:
我的解决方案是让您的模板返回一个设置了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中。
请询问您是否要澄清其中任何一项。