0

ログインしたユーザーのみがFileFieldをダウンロードできるようにするにはどうすればよいですか?

4

2 に答える 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 に答える