【发布时间】:2019-02-22 11:26:06
【问题描述】:
我想向一个模板添加一个edit 选项,该模板只从模型中检索数据并显示它。当点击 edit 按钮时,之前填写并保存的表单应该会显示已保存的数据。但就我而言,表单使用空字段呈现,并在每个字段上方显示“此字段为必填项”。如何在预填充字段的可编辑模式下呈现表单?
这是第一次保存数据的视图:
@login_required
def addprofileView(request):
if request.method == "POST":
form = UserProfileForm(request.POST, request.FILES)
if form.is_valid():
new_user_profile = form.save(commit=False)
new_user_profile.user = request.user
new_user_profile.save()
return redirect('add_license')
else:
form = UserProfileForm()
return render(request, 'addprofile.html', {'form': form})
这是用于编辑的视图,应该返回预填充的表单:
@login_required
def editprofileView(request, pk):
ac = get_object_or_404(Account, pk=pk)
if request.method == "POST":
form = UserProfileForm(request.POST, instance=ac)
if form.is_valid():
ac = form.save(commit=False)
ac.user = request.user
ac.save()
return redirect('view_profile', ac.pk)
else:
form=UserProfileForm(instance=ac)
return render(request, 'addprofile.html', {'form': form})
@login_required
def ProfileView(request, pk):
profile = Account.objects.filter(pk = pk)
return render(request, 'userprofile.html', {'pr': profile})
我做错了什么?
重定向到editprofileView的模板:
{% block content %}
{% for p in pr %}
Name: {{ request.user.username }}
Mobile: {{ p.mobile }}
city: {{ p.city }}
building no: {{ p.building_no }}
state: {{ p.state }}
ZIP: {{ p.zip }}
Country: {{ p.country }}
Sex: {{ p.sex }}
<form action="{% url 'edit_profile' p.pk %}" method="post">
{% csrf_token %}
<input type="submit" value="Edit">
</form>
{% endblock %}
此模板中的操作 URL 将 Account 属性 pk 发送到 editprofileView。
【问题讨论】:
标签: django django-models django-forms django-views