【发布时间】:2021-06-01 17:04:43
【问题描述】:
这是更新用户信息的功能。
views.py
def UpdateProfile(request):
context = {}
user = request.User
if not user.is_authenticated:
return redirect('login')
if request.POST:
form = PersonalInfo(request.POST, instance=user)
if form.is_valid():
obj = form.Save(commit=False)
user = user.id
obj.user = user
obj.save()
return redirect('profile')
else:
#messages.error(request, ('Please correct the error below.'))
context['personal_form'] = form
else:
form = PersonalInfo(instance=user)
context['personal_form'] = form
return render(request, 'admission/signup.html', context)
这是我创建的用于存储用户信息的模型。
models.py:
class ApplicantInfo(models.Model):
infield = models.AutoField(primary_key=True)
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)
profile_pic = models.ImageField(upload_to='media/', blank= True, null= True)
father_name = models.CharField(max_length=30)
user = models.OneToOneField(User, on_delete=models.CASCADE)
这是我创建的表单类。
forms.py:
from .models import Applicant, ApplicantInfo
from django import forms
class PersonalInfo(forms.ModelForm):
class Meta:
model = ProfileInfo
fields = [
'first_name',
'last_name',
'profile_pic',
#'date_birth',
'father_name',
'street_adr',
'city',
'zip_code',
]
这是我创建的前端模板,工作正常。
模板
{%block content%}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form method="POST">
{% csrf_token %}
{% for field in personal_form %}
<p>
{{field.label_tag}}
{{field}}
{% if field.help_text %}
<small style="color:gray">{{field.help_text}}</small>
{% endif %}
</p>
{% endfor %}
{% for field in personal_form %}
<p>
{% for error in field.errors %}
<p style="color:red">{{error}}</p>
{% endfor %}
</p>
{% endfor %}
<button type="submit">Submit</button>
</form>
</body>
</html>
{% endblock content %}
该应用已经能够毫无问题地加载表单,但它只是没有将数据扔到后端。
【问题讨论】:
-
你想在模板中访问什么?
-
我想将用户数据存储在后端。就是这样
-
@AsifIqbal 你没有收到类似“ModelForm has no model class specified.”的错误吗?或者,如果这不是您的表单
PersonalInfo的完整代码,请添加它。另请在问题中添加模板的相关部分。 -
@AbdulAzizBarkat,我没有收到任何错误,并且还完成了更多表单,因为我已经在表单类 PersonalInfo 中放置了模型和字段。我还能够从管理面板保存用户数据。
-
@AbdulAzizBarkat 我已更新表单代码。请看一看。
标签: python mysql django django-models frontend