【发布时间】:2021-06-30 11:51:55
【问题描述】:
我正在尝试在 django 中创建一个页面,用户可以在其中查看他们的个人资料并编辑和保存更改,但是每次我点击保存按钮时,什么都没有发生,当我刷新页面时,信息不会得到更新。我做错了什么?
这是我的models.py:
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User,null= True ,on_delete= models.CASCADE)
profile_pic = models.ImageField(null = True, blank= True)
first = models.CharField(max_length=500, null=True)
last = models.CharField(max_length=500, null=True)
email = models.CharField(max_length=500, null=True)
mobile_number = models.IntegerField(null=True)
location = models.CharField(max_length= 500, null= True)
postal = models.IntegerField(null=True)
def __str__(self):
return self.first
这是我的forms.py:
class ProfileForm(ModelForm):
class Meta:
model = Profile
fields = '__all__'
exclude = ['user']
widgets = {
'profile_pic': forms.FileInput()
}
这是我的views.py:
@login_required(login_url='Login')
def Profile(request):
profile = request.user.profile
form = ProfileForm(instance=profile)
if request.method == 'POST':
form = ProfileForm(request.POST, request.FILE, instance=profile)
if form.is_valid():
form.save()
return HttpResponseRedirect(reversed('Profile'))
context = {'form': form}
return render(request, 'profile.html', context)
这是我的模板:
<div class="col-lg middle middle-profile-con">
<div class="img-cir profile-img">
<img src="{{request.user.profile.profile_pic.url}}" alt="" width="100px" height="100px" class="pro-img">
</div>
<form method='POST' action="" enctype="multipart/form-data">
{% csrf_token %}
<div class="">
<p class="my-name-pro">{{request.user.profile.first}}
<p>
<p class="my-email-id-pro">{{request.user.profile.email}} <br> {{form.profile_pic}}</p>
</div>
<div class="">
<div class="pro-fn-div">
<label class="pro-fn-label">First name</label>
<div class="pro-fn-input"> {{form.first}} </div>
</div>
<div class="pro-ln-div">
<label class="pro-fn-label">Last name</label>
<div class="pro-fn-input"> {{form.last}} </div>
</div>
<div class="pro-email-div">
<label class="pro-fn-label">Email ID</label>
<div class="pro-fn-input"> {{form.email}} </div>
</div>
<div class="pro-pn-div">
<label class="pro-fn-label">Phone Number</label>
<div class="pro-fn-input"> {{form.mobile_number}} </div>
</div>
<div class="pro-lo-div">
<label class="pro-fn-label">Location</label>
<div class="pro-fn-input"> {{form.location}} </div>
</div>
<div class="pro-pc-div">
<label class="pro-fn-label">Postal Code</label>
<div class="pro-fn-input"> {{form.postal}} </div>
</div>
<button type="button" name="Update Information" class="btn btn-dark btn-sm pro-btn-save">Save Changes</button>
</form>
</div>
我不明白我哪里出错了。我需要在模板中添加一些东西吗?也许在保存按钮或其他地方?
【问题讨论】:
-
你的 urls.py 在哪里?
标签: django django-models django-views django-forms django-templates