两种设置表单中必填内容的方法:
1、在input或textarea中增加required,及autofocus
会自动将光标定位到框内,同时如果是空,则提示必填内容。
<p>{{ header_title }}</p>
主题:{{ topic.text }}
<br />
<form action="{% url 'learning_logs:new_entry' topic.id %}" method="post">
{% csrf_token %}
<input style="width:800px;height:30px;" type="text" class="form-control" id="item_name" name="title" placeholder="输入新条目标题" autofocus required><br /><br />
<textarea style="width:800px;height:150px;" id="item_cnt" class="form-control" rows="3" name="text" placeholder="输入新条目内容" required></textarea>
<br />
<button name="submit">add entry</button>
{# <button type="submit" value="Submit">add topic</button>#}
<button type="reset" >reset topic</button>
</form>
2、 使用判断语句,if all(()),else则重新渲染到原输入前的页面
else:
#如果是post方式,获取表单改过的内容,修改表单内容。重定向到entries的html中重新显示重定向。
title = request.POST.get('title', None)
text = request.POST.get('text', None)
if all((title,text)):
try:
Entry.objects.filter(id=entry_id).update(title=title, text=text, topic_id=topic.id)
return redirect(reverse('learning_logs:entries', args=[topic_id]))
except:
entry.title = title
entry.text = text
context = {'topic': topic, 'entry': entry, 'entry.title': entry.title, 'entry.text': entry.text}
return render(request, 'edit_entry.html', context=context)
else:
# return redirect(reverse('learning_logs:edit_entry', args=[entry_id]))#重定向这个页面要id。
entry.title = title
entry.text = text
n = 1
context = {'topic': topic, 'entry':entry, 'entry.title': entry.title, 'entry.text': entry.text,'n':1}
return render(request, 'edit_entry.html', context=context)
#注意,这个少传了一个entry,因为模板中有entry.id/