【发布时间】:2019-03-20 12:22:51
【问题描述】:
我一直在尝试为一个项目创建个人资料页面,用户可以使用 Django 作为框架上传个人资料图片和一些基本的个人信息。
我在代码中传递的基于文本的信息似乎有效,但我无法让用户从个人资料页面上传个人资料图片。但是如果我去 django-admin 页面,我可以从那里上传并显示个人资料图片。所以models.py文件似乎工作,问题似乎在forms.py文件中......我在网上搜索了一段时间和各种教程,但似乎没有任何效果。请帮忙:)
models.py 文件
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500, blank=True)
location = models.CharField(max_length=30, blank=True)
birth_date = models.DateField(null=True, blank=True)
email_confirmed = models.BooleanField(default=False)
image= models.ImageField(upload_to='profile_image', blank=True)
def __str__(self):
return self.user.username
forms.py 文件
class ProfileUpdateForm(forms.ModelForm):
YEARS= [x for x in range(1900,2021)]
birth_date = forms.DateField( initial="21-06-1995", widget=forms.SelectDateWidget(years=YEARS))
image = models.ImageField(upload_to='profile_image',blank=True)
class Meta:
model = Profile
fields = ('bio','birth_date','location','image')
views.py 文件
@login_required
def profile_edit(request):
form = ProfileUpdateForm(request.POST)
if request.method == 'POST':
if form.is_valid():
user = request.user
user.profile.bio = form.cleaned_data.get("bio")
user.profile.birth_date = form.cleaned_data.get("birth_date")
user.profile.location = form.cleaned_data.get("location")
user.save()
return redirect('profile')
else:
form = ProfileUpdateForm()
context = {
'form' : form
}
return render(request, 'webside/profile_edit.html', context)
静态根/url 和媒体根/url 已在设置中实现,并且我已将静态 url 添加到 urls.py 文件中。任何帮助将不胜感激:)
【问题讨论】:
-
阅读this。您将学习如何将文件传递到您的表单以及如何保存您的表单。