Отображение картинки профиля пользователя в блоге - PullRequest
0 голосов
/ 09 июня 2019

Я новичок в Django, и программирование в основном здесь. Я делаю это простое приложение, все работает нормально, когда я сохраняю изображение профиля из зарегистрированной учетной записи пользователя со страницы администратора, когда я пытаюсь отобразить изображение профиля рядом с именем пользователя этого пользователя.отображается пустым, но отображается имя пользователя и электронная почта, я не знаю, где я сделал не так, любая помощь будет оценена ....

models.py

from django.db import models
from django.contrib.auth.models import User

class profile(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg',upload_to='profile_pics')


    def __str__(self):
        return f'{self.user.username} profile'

settings.py

STATIC_URL = '/static/'

#Media root will be full directory where we want django to store uploaded files
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'

#crispy to use bootstrap4 
CRISPY_TEMPLATE_PACK = 'bootstrap4'

LOGIN_REDIRECT_URL = 'blog-home'

LOGIN_URL = 'login'

profile.html внутри моих шаблонов

{% extends "blog/base.html"%}
{% load crispy_forms_tags %}

{% block content %}   
       <div class="content-section">
      <div class="media">
        <img class="rounded-circle account-img" src="{{ user.profile.image.url }}">
        <div class="media-body">
          <h2 class="account-heading">{{ user.username }}</h2>
          <p class="text-secondary">{{ user.email }}</p>
        </div>
      </div>
    </div>
{% endblock content%}

urls.py

  from django.contrib import admin
    from django.contrib.auth import views as auth_views
    from django.conf import settings
    from django.conf.urls.static import static
    from django.urls import path, include
    from users import views as user_views

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('register/',user_views.register,name='register'),
        path('profile/',user_views.profile,name='profile'),
        path('login/',auth_views.LoginView.as_view(template_name='users/login.html'),name='login'),
        path('logout/',auth_views.LogoutView.as_view(template_name='users/logout.html'),name='logout'),
        path('',include('blog.urls')),
    ]


    if settings.DEBUG:
        urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Примечание:

users uploaded pic will be saved on django_project -> media ->profile_pics->pics.jpg

views.py

from django.shortcuts import render,redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .forms import UserRegisterForm

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            messages.success(request,f'Your Account had been created now you are able to login')
            return redirect('login')
    else:
        form = UserRegisterForm()
    return render(request, 'users/register.html',{'form':form})


@login_required
def profile(request):
    return render(request,'users/profile.html')

Ответы [ 2 ]

0 голосов
/ 09 июня 2019

Для ваших изображений нужна библиотека подушек для работы с Django. Вы можете установить его с pip следующим образом:

pip install Pillow

Затем вы должны импортировать его в models.py следующим образом:

from PIL import Image
0 голосов
/ 09 июня 2019

put / media / in img src

<img class="rounded-circle account-img" src="/media/{{ user.profile.image }}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...