1. ホーム
  2. django

Django 'image' 属性に関連するファイルがありません。

2023-09-08 15:36:04

質問

ユーザーが私のアプリに登録したとき、プロフィールページに到達すると、このエラーが表示されます。

The 'image' attribute has no file associated with it.
Exception Type: ValueError 
Error during template rendering
In template C:\o\mysite\pet\templates\profile.html, error at line 6
1 <h4>My Profile</h4>
2  
3 {% if person  %}
4 <ul>           
5   <li>Name: {{ person.name }}</li>
6   <br><img src="{{ person.image.url }}">
Traceback Switch back to interactive view
File "C:\o\mysite\pet\views.py" in Profile
 71.     return render(request,'profile.html',{'board':board ,'person':person})

このエラーは、私のテンプレートが画像を必要とし、彼はちょうど彼が編集ページに移動し、ページを追加し、彼はプロフィールページにアクセスできる場合を除き、画像を追加することができない登録されたばかりを見たので、私はこのエラーが発生すると思います。

私のプロフィール.html

<h4>My Profile</h4>

{% if person  %}
<ul>           
    <li>Name: {{ person.name }}</li>
    <br><img src="{{ person.image.url }}">


</ul>
{% endif %}

views.pyにあるMy Profile関数

def Profile(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('world:LoginRequest'))
    board = Board.objects.filter(user=request.user)
    person = Person.objects.get(user=request.user)
    return render(request,'profile.html',{'board':board ,'person':person})

Personオブジェクトのインスタンスを2つ作り、テンプレートでifで区切るという方法を試しましたが、うまくいきませんでした。

<h4>My Profile</h4>

{% if person  %}
<ul>           
    <li>Name: {{ person.name }}</li>
 </ul>
{% endif %}
{% if bob %}
<ul>           
<br><img src="{{ bob.image.url }}">
</ul>

プロファイル機能に対する私の解決策

def Profile(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect(reverse('world:LoginRequest'))
    board = Board.objects.filter(user=request.user)
    person = Person.objects.get(user=request.user)
    bob = Person.objects.get(user=request.user)

    return render(request,'profile.html',{'board':board ,'person':person,'bob':bob})

私は組み込みテンプレートタグとフィルタのドキュメントを読んでいる ここで解決策は、(および)テンプレートタグを使用することだと思いますが、私はそれを適切に使用することができないようです。

どのように私は画像をオプションにするために、このテンプレートを設定することができます。画像がない場合はそのままで、人物名を表示します。

私を助けていただきありがとうございます。

どのように解決するのですか?

bob そして person は同じオブジェクトです。

person = Person.objects.get(user=request.user)
bob = Person.objects.get(user=request.user)

ということで、人だけでOKです。

テンプレートで image が存在するかどうかを確認します。

{% if person.image %}
    <img src="{{ person.image.url }}">
{% endif %}