Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django视图中缺少POST数据_Python_Django_Post - Fatal编程技术网

Python Django视图中缺少POST数据

Python Django视图中缺少POST数据,python,django,post,Python,Django,Post,我试图将一些登录数据传递给Django应用程序中的一个视图,但没有将POST数据传递给该视图。首先是带有登录界面的模板 <form method="post" action="login"> {% csrf_token %} Username<input type="text" name="username"><br /> Password<input type="password" name="password"><br /

我试图将一些登录数据传递给Django应用程序中的一个视图,但没有将POST数据传递给该视图。首先是带有登录界面的模板

<form method="post" action="login">
{% csrf_token %}
    Username<input type="text" name="username"><br />
    Password<input type="password" name="password"><br />
    <input type="submit" value="Login" />
</form>
在我尝试分配给username变量的行中,我得到了错误:

MultiValueDictKeyError at /minion/login
"Key 'username' not found in <Querydict: {}>"
Request Method: GET
Request URL: http://127.0.0.1:8000/minion/login
Django Version: 1.5.1

似乎你得到的是请求,而不是POST或之后或之前

Request Method: GET
Request URL: http://127.0.0.1:8000/minion/login
我想你应该检查一下请求方法

from django.contrib.auth import authenticate, login
def login(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
    # otherwise create page with form or redirect

POST请求可能是意外的,并且是通过某种重定向完成的(例如,缺少尾随斜杠可能会导致重定向)。您应该注意这种情况。

似乎您使用的是GET请求,而不是POST或之后或之前

Request Method: GET
Request URL: http://127.0.0.1:8000/minion/login
我想你应该检查一下请求方法

from django.contrib.auth import authenticate, login
def login(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
    # otherwise create page with form or redirect

POST请求可能是意外的,并且是通过某种重定向完成的(例如,缺少尾随斜杠可能会导致重定向)。您应该注意这种情况。

您正在被重定向

您的表单操作(即目的地)只是
login
。但Django的默认配置是以最后一个斜杠结束所有URL,如果URL没有这样做,则重定向:因此浏览器正在从
/login
重定向到
/login/
。重定向总是GET,因此POST数据丢失


使用
action=“/login/”
一切都会好起来。

你被重定向了

您的表单操作(即目的地)只是
login
。但Django的默认配置是以最后一个斜杠结束所有URL,如果URL没有这样做,则重定向:因此浏览器正在从
/login
重定向到
/login/
。重定向总是GET,因此POST数据丢失


使用
action=“/login/”
一切都会好起来。

将操作更改为“{%'Minion.views.authUser”%”,并将视图函数更改为authUser,因为它与从auth模块导入的登录函数冲突,并且一切都开始正常工作。

将操作更改为“{%'Minion.views.authUser”%}并将view函数更改为authUser,因为它与从auth模块导入的登录函数冲突,并且一切都开始正常工作。

尝试此操作,它将确保在您的views.py中正常工作

from django.contrib.auth import authenticate, login
def login(request):
    if request.method == 'POST':
       data = request.POST
       username = data['username']
       password = data['password']
       user = authenticate(username=username, password=password)

试试这个,它一定能在你的views.py中工作

from django.contrib.auth import authenticate, login
def login(request):
    if request.method == 'POST':
       data = request.POST
       username = data['username']
       password = data['password']
       user = authenticate(username=username, password=password)


将操作更改为
{%url login%}
,这会给我一个NoReverseMatch errorwell。。将其更新为适当的URL名称。我刚才给你看了一个例子,URL名是“login”,我就是这么用的。哦。。您需要将视图代码括在
if request.POST:
中,这样,只有当
{%url login%}
的submitchange操作给我一个NoReverseMatch errorwell时,它才会命中该代码。。将其更新为适当的URL名称。我刚才给你看了一个例子,URL名是“login”,我就是这么用的。哦。。您需要将视图代码括在if request.POST:中,这样,只有当有提交者时,它才会命中该代码。为了完整性-在HTML表单中-设置属性'method='POST'“然后您的请求将是post而不是GET,因为我可以看到他有这样一个字符串
,虽然这确实防止了错误,但它也阻止了我的视图执行我需要的任何操作。我需要应用程序使用post.ok,因为我知道你已经向{%url login%}发出post请求。你能提供url.py吗?Django重定向您(我认为是因为尾部斜杠),您发出了GET请求。在这种情况下,您应该使用正确的url来避免重定向,以确保完整性-在HTML表单中-设置属性'method='post'“然后您的请求将是post而不是GET,因为我可以看到他有这样一个字符串
,虽然这确实防止了错误,但它也阻止了我的视图执行我需要的任何操作。我需要应用程序使用post.ok,因为我知道你已经向{%url login%}发出post请求。你能提供url.py吗?Django重定向您(我认为是因为尾部斜杠),您发出了GET请求。在这种情况下,您应该使用正确的url来避免重定向我仍然有一个带有此建议的GET方法我仍然有一个带有此建议的GET方法