2017-05-01 126 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)