Не удается сохранить путь к файлу изображения в базе данных с использованием моделей django. - PullRequest
0 голосов
/ 12 декабря 2018

Я учу Джанго.и я застрял в ситуации, когда я хочу, чтобы пользователь загружал свои изображения на мой сайт.когда пользователь загружает файлы, он успешен без каких-либо ошибок, но когда я загружаю страницу профиля, все значения там, кроме изображения.Но загрузка файлов из админ-панели работает абсолютно нормально.Я действительно не могу понять ошибку здесь.Что-то не так с запросом?Как это исправить?

следующее - это мой models.py

class BlogUser(models.Model):
    user=models.OneToOneField(User,on_delete=models.CASCADE)
    picture=models.ImageField(upload_to='user_pic')
    bio= models.TextField(max_length=256,blank=True)
    date_of_birth=models.DateField()

    def get_absolute_url(self):
        return reverse('blogs:profile',kwargs={'username':self.user.username})

следующее - мой шаблон:

{% extends 'base.html' %}
{% load staticfiles %}
{% load crispy_forms_tags %}
{% block title %}User Profile{% endblock %}
{% block body %}
    <p>{{blog_user.username}}</p>
    <p>{{blog_user.first_name}}&nbsp;{{blog_user.last_name}}</p>
    <p>{{blog_user.email}}</p>
<img style="width: 200px" src="{% static 'media/' %}{{user_p.picture}}" alt="" />

<p>{{user_p.bio}}</p>
<p>{{user_p.date_of_birth }}</p>
<br><hr>
{% if not is_profile_complete %}
    <form method="POST" action="{% url 'profile' blog_user.username %}">
        {% crispy user_profile %} {% csrf_token %}    
    </form>
{% endif %}    

{% endblock %}

это мой views.py:

@login_required
def Profile(request, username):
    user = get_object_or_404(User, username=username)
    user_p=""
    is_profile_complete=False
    try:
        user_p = BlogUser.objects.get(user_id=user.id)
        user_profile=''
    except:
        if request.method == "POST":

            user_profile = UserProfileForm(data=request.POST)

            if user_profile.is_valid():
                profile = user_profile.save(commit=False)
                profile.user = user

                if 'picture' in request.FILES:
                    profile.picture = request.FILES['picture']
                profile.save()
                is_profile_complete=True
                return HttpResponseRedirect(redirect('profile',username=user.username))
        else:
            user_profile = UserProfileForm()
    finally:        
        return render(request, 'profile.html', {'blog_user': user, 'user_profile': user_profile,'user_p':user_p,'is_profile_complete':is_profile_complete, 'no_user_err': 'Some error occured'})
...