无法使用Django模型将图像文件路径存储在数据库中。

时间:2018-12-12 11:17:35

标签: python django django-models

我正在学习Django。并且我陷入了一种希望用户将其图像上传到我的网站的情况。当用户上传文件时,它成功,没有任何错误,但是当我加载配置文件页面时,除了图像,所有值都在那里。但是从管理面板上传文件绝对可以。我真的不知道这里的错误。请求有问题吗?如何解决?

以下是我的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'})

0 个答案:

没有答案