【发布时间】:2021-01-11 15:50:18
【问题描述】:
谁能帮助我了解如何正确地将字段错误发送回 django 中未使用标准 django 表单验证过程的非模型表单字段?再次呈现表单时出现错误并且仍输入用户数据以进行更正和重新提交?
在模型级别验证的简单用户名字段的示例 html:
<!--form-->
<form id="profile" class="small" method="POST" action="{% url 'profile' %}">
{% csrf_token %}
<!--Username-->
<label for="username">Username <span style="font-style: italic;">(create a unique display name that will appear to other users on the site)</span></label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="username">@</span>
</div>
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="username" name="username" value="{% if profile and profile.username is not None %}{{ profile.username }}{% endif %}">
</div>
<button type="submit" class="btn btn-primary" name="profile_form" value="profile_form">Save</button>
</form>
查看
class ProfileView(View):
def get(self, request, *args, **kwargs):
# get request...
def post(self, request, *args, **kwargs):
if request.method == "POST":
# check if profile_form submitted
if 'profile_form' in request.POST:
# get user form data
profile_data = request.POST.dict()
# get current user profile
user_profile = Profile.objects.get(my_user=request.user)
# check username entry against current
if user_profile.username == profile_data['username']:
messages.success(request, "This is the current user.")
else:
try:
# try to save the new username
user_profile.username = profile_data['username']
user_profile.save(update_fields=['username'])
messages.success(request, "Success: Username was updated.")
except:
# unique constraint error on username
# ERROR PROCESSING NEEDED
# Need to send error to form for user to correct and resubmit???
# return get request to process any updated data
return HttpResponseRedirect(reverse('profile'))
【问题讨论】:
标签: django django-views django-templates