ログインしたユーザーのみがFileFieldをダウンロードできるようにするにはどうすればよいですか?Django:ログインしたユーザーのみがファイルフィールドを使用できるようにする
0
A
答えて
2
異なるフォームをユーザーに表示する場合は、別のModelForm(または単にフォーム)が必要です。
class FormWithoutFormField(RegularForm):
class Meta:
exclude = ('field_name',)
これは、表示したい新しいフォームの内部に入る:この形式は、次のようになります。使用していた他のフォームも拡張していることに注意してください。これですべてのことがそのまま維持されるはずです。必要のないフィールドを除外することができます。
次に、ユーザーがビューのどこかにログインしているかどうかを確認する必要があります。あなたはDjangoのadminまたはカスタムテンプレートのためにそれが必要な場合は説明しなかった
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.
1
:それは、のようなものです。カスタムテンプレート/ビューの場合は、別のフォームは必要ありません。テンプレートでこれを行うだけです。あなたはおよそhandling static filesジャンゴで読んだことを提供
<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>
。
あなたは一般的なビューを使用していますか、自分で作成していますか?あなたはどのようなコードを持っていますか? – Paragon