如何使 FileField 仅可供登录用户下载?
问问题
113 次
2 回答
2
如果您想向用户显示不同的表单,则需要不同的 ModelForm(或只是 Form)。此表单应如下所示:
class FormWithoutFormField(RegularForm):
class Meta:
exclude = ('field_name',)
这进入您要显示的新表单内部。请注意,您正在扩展您正在使用的其他形式。这应该保持几乎所有内容不变,并且您可以简单地排除您不想要的字段。
然后,您需要检查用户是否在您的视图中的某个位置登录。也就是说,类似:
if request.user.is_authenticated():
form_class = FormWithoutFileField
else:
form_class = RegularForm
# Do whatever you did with the normal form, but now with the new form.
于 2012-05-06T18:04:14.467 回答
1
您没有解释是否需要 django 管理员或自定义模板。如果它是用于自定义模板/视图,您不需要其他表单,只需在您的模板中执行此操作。
<div id="blah">
{% if user.is_authenticated %}
<a href="{{ somemodel.somefilefield.url }}">Download the file</a>
{% else %}
<p>No downloading for you!</p>
{% endif %}
</div>
前提是您已经阅读了有关在 django 中处理静态文件的内容。
于 2012-05-07T00:02:52.673 回答