ログインしたユーザーのみがFileFieldをダウンロードできるようにするにはどうすればよいですか?
2 に答える
2
ユーザーに別のフォームを表示する場合は、別の ModelForm (または単にフォーム) が必要です。このフォームは次のようになります。
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 に答える