Как я могу получить фотографию профиля?
Картинка профиля загружается в базу данных, но я не могу получить картинку профиля в шаблоне. Как можно получить изображение профиля?
Просмотр изображения профиля:
def change_profile_picture(request):
if request.user.is_authenticated:
if request.method == "POST":
profile_picture = request.FILES['profile_picture'] if 'profile_picture' in request.FILES else None
user = get_object_or_404(User, pk=request.user.pk)
if request.user.pk != user.pk:
messages.success(request,f"{request.user.first_name}, Your profile picture not updated")
return redirect("/")
Profile_picture.objects.create(
Profile_picture = profile_picture,
USer = request.user,
)
messages.success(request,f"{request.user.first_name}, Your profile picture updated")
return redirect("/")
return render(request,'0_index.html')
Модель:
class Profile_picture(models.Model):
USer = models.ForeignKey(User,default=None,on_delete=models.CASCADE)
Profile_picture = models.ImageField(upload_to="3_profile_picture/",null=True, blank=True)
def __str__(self):
return str(self.pk)+ str(".") + str(self.USer)
Url:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('business_app.urls')),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Шаблон:
<form action="change_profile_picture/" method="POST" class="" enctype="multipart/form-data">
{% csrf_token %}
<img src="static/1_images/3_about.jpg" alt="" width="100"
class="img-fluid rounded-circle mb-3 img-thumbnail shadow-sm">
<input type="file" required name="profile_picture" class="profile_picture_upload">
<button class="btn profile_picture_submit_btn" type="submit">submit</button>
</form>
Для этого необходимо убедиться, что у вас правильные media настройки для разработки.
#1 Включите его в контекстные процессоры в настройках шаблона:
# settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': []
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.media', # Add this
],
},
},
]
Затем в вашем шаблоне включите тег шаблона media и постройте ваш url следующим образом:
<img src="{{ media_url }}{{ request.user.3_profile_picture }}">