我想在img src字段中插入用户的图片。但是我无法做到。 我的代码:
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 }}
答案 0 :(得分:2)
1,以正确的方式注册静态和媒体。
MEDIA_URL = '/media/'
MEDIA_ROOT = '/srv/django/myproject/src/myproject/media'
STATIC_URL = '/static/'
STATIC_FILE_ROOT = '/srv/django/myproject/src/myproject/static'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
'/srv/django/myproject/src/myproject/static',
)
2,在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"/>
答案 1 :(得分:0)
您需要以这种方式使用attibutes名称:
<img src={{ u.allusers.avatar.url }}
可以在documentation中查看。
注意:如果u.allusers
是一个很好的参考,那将会有效,我对此有所怀疑。
答案 2 :(得分:0)
您需要在OneToOne字段中使用related_name通过User引用allusers模型。
class allusers(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile")
模板
<img src="{{ u.profile.avatar.url }}">
答案 3 :(得分: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)