【发布时间】:2016-03-25 00:45:53
【问题描述】:
我正在创建一个用户评论表单,患者可以在其中对他们的医生进行评论。我只希望登录的用户写评论,每个医生每个用户只有 1 条评论。无论用户是否登录,都会显示一个评论表单。如果未登录,单击提交按钮后,页面将重定向到登录表单,并在成功验证后重定向回医生资料。但是当用户被重定向时,表单数据会丢失。
如何临时保存表单数据,以便在用户成功验证后返回并提交表单时保留在那里?我已经在您可以使用会话的地方阅读它,但一切都如此压倒性和令人困惑,我无法理解。
docprofile.html
{% if reviewed == False %}
<form action="" method="post" id="user_uploader" > {% csrf_token %}
<div class="revbox">
<textarea type="text" class="form-control" id="comment" placeholder="How was your experience?" name="comment" rows="6"></textarea>
<div class="subbox">
<div class="like-dis-check">
<p id="wouldrec"> Would you recommmend this doctor to someone else?</p>
<input type="radio" id="radio1" name="Like" value="Like">
<label id="r1" for="radio1">Yes</label>
<input type="radio" id="radio2" name="Like" value="Dislike">
<label id="r2" for="radio2">No</label>
</div>
<div class="drop1">
<input type="hidden" name="user" value="{{ user.id }}" />
<input type="hidden" name="doctor" value="{{ doctor.id }}" />
</div>
{% if not user.is_authenticated %}
<div class="subbutton">
<a class="btn btn-primary" href="{% url 'login' %}?next={{ request.path }}" type="" name="submit" id="ss-submit">Submit</a>
</div>
{% else %}
<div class="subbutton">
<button class="btn btn-primary" type="submit" name="submit"id="ss-submit">Submit</button>
</div>
{% endif %}
<div class="errorbox">
{% for field in form.visible_fields %}
{{ field.errors }}
{% endfor %}
</div>
</div>
</div>
</form>
{% elif user.is_authenticated and reviewed == True %}
<h4><a class="writebtn">Already Reviewed!</a></h4>
{% else %}
<a class="btn btn-primary writebtn" onclick = " ga('send','event', 'button' , 'Write a Review', 'Dr. {{doctor.name}}', 7);" href="{% url 'login' %}?next={{ request.path }}">Write a Review</a>
{% endif %}
view.py
def showDocProfile(request, slug):
doctor = get_object_or_404(Doctor, slug=slug)
d = getVariables(request,dictionary={'page_name': "Dr. " + doctor.name +" "+ doctor.specialization.name +"})
if request.user.is_authenticated():
user = request.user
if request.method == "POST":
form = UserContentForm(request.POST)
if form.is_valid():
comment = form.cleaned_data['comment']
if request.POST.get('Like') == 'Like':
con = UserContent(comment = comment, liked = True, disliked = False, doctor_id = doctor.id, user_id = request.user.id)
doctor.likes += 1
doctor.netlikes = doctor.likes - doctor.dislikes
doctor.save()
con.save()
elif request.POST.get('Like') == 'Dislike':
con = UserContent(comment = comment, liked = False, disliked = True, doctor_id = doctor.id, user_id = request.user.id)
doctor.dislikes +=1
doctor.netlikes = doctor.likes - doctor.dislikes
doctor.save()
con.save()
url = '/docprofile/%s' % str(doctor.id)
return HttpResponseRedirect(url)
else:
form = UserContentForm()
UGC = UserContent.objects.filter(doctor_id=doctor.id).order_by('-submitted_on') # Reviews on Meddy
d.update({'doctor': doctor, 'UGC': UGC,'form': form, 'doctors': Doctor.objects.all().order_by('-rating')})
return render(request, 'm1/docprofile.html', d)
【问题讨论】:
-
会话确实是你会做的。但是如果用户未登录,我在该代码中看不到任何重定向的内容;这是在哪里发生的?
-
在文档资料中。 {% 如果不是 user.is_authenticated %}。当用户单击提交按钮时,它会被重定向到登录页面。