Skip to main content
 首页 » 编程设计

python之django 在 render_to_response() 之后注销我

2025年05月04日37zhoujg

这是我的views.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 %} 

但是当错误发生时,它会重定向并注销我。如何将经过身份验证的用户发布到我的帖子页面?

请您参考如下方法:

You should probably use render with request

rewrite your else part in views.py

例如 -

else: 
        context ={       
        'form': form, 
 
        } 
 
        return render(request, 'createPost.htm', context)