我正在学习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}} {{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'})