新问题,重定向到需要参数的方法时,必须要带参数否则不会成功
reverse里面用args=[topic_id]或者keyword的方式。
def new_entry(request, topic_id):
"""获取由url传递过来的id,让添加者知道在哪个主题下添加了条目"""
#如果有get,post的。
#获取数据
topic = Topic.objects.get(id=topic_id) # 无需冒号。
#如果是使用的?id=2的方式传递参数则,通过topic_id = requeset.GET.get('topic_id')要加引号,后面可以接默认值。
print(topic)
context = {'topic': topic}
#处理数据
if request.method != 'POST':
context = {'topic': topic}
return render(request, 'new_entry.html', context=context)
else:
title = request.POST.get('title', None)
text = request.POST.get('text', None)
print(title, text,topic.text)
if all((title,text)):
try:
Entry.objects.create(title=title, text=text, topic_id=topic.id)
return redirect(reverse('learning_logs:entries', args=[topic_id]))
except:
return render(request, 'new_entry.html', context=context)
else:
return redirect(reverse('learning_logs:new_entry', args=[topic_id]))#重定向这个页面要id。