在Django中间件中获取表单数据

时间:2019-03-07 10:29:05

标签: python django

我基本上想做的是从前端将数据捕获到我的中间件中,以便我可以跟踪用户的活动。用户活动是指单击按钮并将数据输入到表单中。 因此,我已经完成了按钮部分的工作,但一直坚持要让用户将数据填充到表单中。我需要帮助。

以下是我的html和我的中间件在python中构建:

middleware.py:

class TodoappMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)
        if request.method == "GET":
            f = open("/home/gblp250/Desktop/log", 'a')
            f.write("User clicked ")
            name = request.GET.get('name')
            if not name == 'None':
                f.write(str(name))
                f.write("\n")
            f.close()

        elif request.method == 'POST':
            f = open("/home/gblp250/Desktop/log", 'a')
            f.write("User clicked ")
            if request.POST.get("Login"):
                nm = request.POST.get("Login")
                if not nm == 'None':
                    f.write("Login\n")
            elif request.POST.get("Authorize"):
                f.write("Authorize\n")
            elif request.POST.get("Assign"):
                f.write("Assign\n")
            elif request.POST.get("delete_task"):
                f.write("Delete task\n")
            elif request.POST.get("mark_complete"):
                f.write("Mark as complete\n")
            elif request.POST.get('authorise_users'):
                form = AuthUserCheckbox(request.POST)
                if form.is_valid():
                    ch = form.cleaned_data.get('choice')
                    print "User then chose "
                    f.write(ch)

            f.close()

html:

{% extends 'todoapp/base.html' %}

{% block title %}Authorize users{% endblock %}

{% block content %}
    <h2>Select users to authorize</h2>
    <form method="post" action="{% url 'auth_users' %}" id="authorise_users">
        {% csrf_token %}
        {{ form.choice }}
        <br/><input type="submit" value="Authorize" name="Authorize">
        &nbsp;&nbsp;<button onclick="location.href='{%url 'dashboard' %}?name=Go back'" type="button">Go back</button>
    </form>
{% endblock %}

request.POST.get以外的所有authorise_users都是按钮,它是一个复选框。我无法获得用户输入的值。我已单击所有按钮,但无法获得authorise_users

的选定值

1 个答案:

答案 0 :(得分:0)

根据您遇到的错误(在问题的注释中提到),您可能需要更改该行

if request.choice.is_valid():

if form.choice.is_valid():

if form.is_valid():

这有助于解决错误吗?