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中选择文件后预览照片

在没有 django 表单的 django 模板上工作 [关闭]

在标题 Django 管理工具中隐藏 Django 徽标/名称

如何在 Django 之外使用 Django 模型?

如何在django系统外使用django的ORM

Django入门----在pycharm上面构建django遇见的问题