[英]Django display Image of User
Good Day,每个用户都有一个图像,我如何显示特定的用户图像?
\\models.py
class UserImage(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL, default=None, null=True, on_delete=models.CASCADE)
photo = models.ImageField(
upload_to='images/', height_field=None, width_field=None, max_length=100)
def __str__(self):
return str(self.user)
\\forms.py
class UserImageForm(forms.ModelForm):
class Meta:
model = UserImage
fields = (
'photo',
)
\\views.py
def photo_view(request):
try:
profile = request.user.userimage
except UserImage.DoesNotExist:
profile = UserImage(user=request.user)
if request.method == 'POST':
form = UserImageForm(request.POST, request.FILES, instance=profile)
if form.is_valid():
form.save()
return redirect('/dashboard/user/photo')
else:
form = UserImageForm(instance=profile)
return render(request, 'photo.html', {'form': form, 'profile': profile})
测试.html
<img src="{{ WhatHere? }}" alt="User Profile Image" />
所以在 src="" 中必须是 URL 到用户添加的图像。 每个用户只能看到他自己的图像,而不是应该显示所有现有的图像。
编辑 \\settings.py
LOGIN_URL = '/signin'
LOGIN_REDIRECT_URL = '/signin'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static")
\\ 网址.py
from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from abstractuser.views import (
signup_view,
signin_view,
signout_view,
)
from dashboard.views import (
dashboard_home_view,
title_delete,
profile_view,
photo_view,
)
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('signup/', signup_view),
path('signin/', signin_view),
path('signout/', signout_view),
path('dashboard/home', dashboard_home_view),
path('dashboard/title/delete/<int:title_id>',
title_delete, name="delete_title"),
path('dashboard/user/profile/', profile_view),
path('dashboard/user/photo/', photo_view),
]
我想我必须在 urls.py 中添加一些东西,但我不知道是什么
您可以使用
<img src="{{ profile.photo.url }}" alt="User Profile Image" />
在您的 settings.py 中,您必须设置MEDIA_URL
和MEDIA_ROOT
AS
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
在你项目的主要urls.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('signup/', signup_view),
path('signin/', signin_view),
path('signout/', signout_view),
path('dashboard/home', dashboard_home_view),
path('dashboard/title/delete/<int:title_id>',
title_delete, name="delete_title"),
path('dashboard/user/profile/', profile_view),
path('dashboard/user/photo/', photo_view),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.