django 在 render_to_response() 后注销我
Posted
技术标签:
【中文标题】django 在 render_to_response() 后注销我【英文标题】:django logout me after render_to_response() 【发布时间】:2017-05-11 17:55:21 【问题描述】:这是我的观点.py
def createpost(request, id=None):
form = PostForm(request.POST or None, request.FILES or None)
if form.is_valid() and request.method == 'POST':
instance = form.save(commit=False)
instance.user = request.user
instance.save()
messages.success(request, "successfully create!")
return HttpResponseRedirect('/post')
else:
context =
'form': form
return render_to_response('createPost.html', context)
和 createPost.html 代码,我想显示错误的帖子页面
% if form.errors %
% for field in form %
% for error in field.errors %
<div class="alert alert-danger">
<strong> error|escape </strong>
</div>
% endfor %
% endfor %
% for error in form.non_field_errors %
<div class="alert alert-danger">
<strong> error|escape </strong>
</div>
% endfor %
% endif %
% if request.user.is_authenticated %\
<form method="POST" name="PostForm" action="/post/createpost/" enctype="multipart/form-data"> % csrf_token %
form|as_bootstrap_inline
<input type="hidden" name="user_id" value=" user.id " />
<button type="submit" class="btn btn-primary">Save AD</button>
% else %
<div>Please Register First!</div>
% endif %
</form>
% endblock content %
但是当错误发生时,它会重定向并注销我。如何将经过身份验证的用户发布到我的帖子页面?
【问题讨论】:
是的,我用 django 登录 【参考方案1】:您可能应该在请求中使用渲染
在views.py中重写你的else部分
例如 -
else:
context =
'form': form,
return render(request, 'createPost.htm', context)
【讨论】:
【参考方案2】:您应该改用render,render_to_response 不会使请求可用,请参阅documentation:
这个函数在 render() 的引入之前并且工作类似,除了它不使请求在响应中可用。不推荐使用,将来可能会弃用。
这就是模板中% if request.user.is_authenticated %
验证未通过的原因。
【讨论】:
以上是关于django 在 render_to_response() 后注销我的主要内容,如果未能解决你的问题,请参考以下文章
在没有 django 表单的 django 模板上工作 [关闭]