查看表单和上下文字典

时间:2017-01-24 11:15:20

标签: python django

我不知道如何在同一视图中返回表单和context_dict

我的观点:

def myview(request):    
    context_dict = {}
    u = request.user
    context_dict['user'] = u

    ...
    form = form.myformForm()
    #return render(request, 'mytemplate.html', context_dict)
    return render(request, 'mytemplate.html', {'form': form })

此外,我需要在基本模板中使用context_dict(对于导航栏),所以我希望以这种格式访问上下文,如果可能的话,没有其他前缀/路径:

{{ user.username }}

1 个答案:

答案 0 :(得分:1)

这是一个非常简单的表单视图,可能有助于作为模板:

def simpleView(request):
    if request.method == "POST":
        myform = MyForm(request.POST)
        if myform.is_valid():
            #process form data
            pass
        else:
            # process form errors
            pass
    else:
        myform = MyForm()
    return render(request, "template.html", {"form": myform})

此外,您不应该通过上下文字典传递用户,我相信您可以执行{% request.user.username %}

模板

要直接回答问题,我不知道如何在同一视图中返回表单和context_dict,您只需将表单与所有数据一起放入上下文字典中即可你投入了。

上面视图中的if request.method == "POST语句表示该视图可以处理GET和POST请求。加载页面时的GET请求,以及有人在该页面上提交表单时的POST请求。

通过使用Django中的messaging功能,向用户提供有关表单处理状态的反馈的简洁方法。

您可以通过以下方式在网页上向用户发送消息:

messages.error(request, "some message here")

(其中错误可能是success或其他一种消息类型)。

然后,您可以非常轻松地在模板中访问和显示它们:

{% if messages %}
    {% for message in messages %}
        # DISPLAY USING HTML OR SOMETHING HERE
    {% endfor %}
{% endif %}

可能有更好的方法来进行消息处理,但这只是我发现的一种看起来非常整洁的方式!