我基本上想做的是从前端将数据捕获到我的中间件中,以便我可以跟踪用户的活动。用户活动是指单击按钮并将数据输入到表单中。 因此,我已经完成了按钮部分的工作,但一直坚持要让用户将数据填充到表单中。我需要帮助。
以下是我的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">
<button onclick="location.href='{%url 'dashboard' %}?name=Go back'" type="button">Go back</button>
</form>
{% endblock %}
除request.POST.get
以外的所有authorise_users
都是按钮,它是一个复选框。我无法获得用户输入的值。我已单击所有按钮,但无法获得authorise_users
答案 0 :(得分:0)
根据您遇到的错误(在问题的注释中提到),您可能需要更改该行
if request.choice.is_valid():
到
if form.choice.is_valid():
或
if form.is_valid():
这有助于解决错误吗?