2017-05-01 125 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 }} 

回答

1

1,正確註冊靜態和媒體設置。

​​

2,調用靜態和媒體的URL在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,呼叫avathar這樣

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

您需要使用attibutes名字,以這種方式:

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

可以在documentation檢查。

注意:如果u.allusers是一個很好的參考,這將有效,我有一些疑問。

+0
+0

也許您需要使用** name **和** path **屬性。你在url屬性中獲得什麼字符串?顯示它們的值並選擇哪些可以爲你工作。 – LuisLl

0

您需要使用related_name在OneToOne領域引用所有用戶通過用戶進行建模。

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)