2017-05-01 7 views
0

私はimg srcフィールドにユーザーの画像を挿入したいと思います。私はそれを行うことができません。 マイコード:djangoのテンプレートのモデルの画像を表示します

models.py

class allusers(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    avatar = models.ImageField(upload_to='retest/static/images/') 

views.py

u = User.objects.get(username=username) 

tempate

<img src={{ u.allusers.avatar }} 
あなたはそのように、attibutes名を使用する必要が

答えて

1

1、スタティックとメディアを正しく設定してください。

​​

2、あなたが参照するためにOneToOneフィールドにrelated_nameを使用する必要があり、この

<img src="{{ u.allusers.avatar.url }}" alt="Avathar"/> 
0

<img src={{ u.allusers.avatar.url }}

documentationで確認できます。

注:u.allusersが参考になる場合は動作しますが、疑問があります。

+0
+0

** name **と** path **属性を使用する必要があります。あなたはどのような文字列のURL属性を取得?それらの値を表示し、どちらがあなたに適しているかを選択します。 – LuisLl

0

ようavatharを呼び出し、urls.py

from django.views.static import serve 

url(r'^media/(?P<path>.*)$', serve, { 'document_root': settings.MEDIA_ROOT}), 
url(r'^static/(?P<path>.*)$', serve, { 'document_root': settings.STATIC_FILE_ROOT}), 

3に静的およびメディアURLを呼び出しますallusersはUserを通してモデル化します。

class allusers(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile") 

テンプレート

<img src="{{ u.profile.avatar.url }}"> 
0

実は、私は別の解決策を持って

settings.py

STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR, 'static/') 
MEDIA_URL = '/media/' 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') 

urls.py

from django.conf.urls.static import static 
if settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL, 
document_root=settings.STATIC_ROOT) 
    urlpatterns += static(settings.MEDIA_URL, 
document_root=settings.MEDIA_ROOT) 
関連する問題