簡體   English   中英

通過表單發送時沒有 Django POST 數據?

[英]No Django POST data when sent over a form?

我在開發服務器上(沒有 CSRF 保護),通過 Web 表單(Django:127.0.0.1:8000)向 Django 發送登錄數據。 HTML:

<!DOCTYPE html>
<html>
<head>
<title>Log In</title>
<meta charset="utf-8">
</head>
<body>
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>
<header>

</header>
<script> 
$("document").ready(function () {
$("header").load("static/header.html");
})
</script>
<div id="loginbox">
<h3>Log In</h3>
<form action="http://127.0.0.1:8000" method="post">
<input type="text" id="uname"><br>
<input type="password" id="pass"><br>
<button id="login" type="submit">Log In</button></br>
</form>
<a href="signup.html">Sign Up</a><br>
<a href="forgotCredentials.html">Forgot Username/Password?</a>
</div>
</body>
</html>

姜戈:

from django.shortcuts import render

# Create your views here.


from django.contrib.auth import authenticate, login

from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse

@csrf_exempt
def index(request):
    uname = request.POST.get("uname")
    passwd = request.POST.get("pass")
    print(uname + " pass " + passwd)
    user = authenticate(username=uname, password=passwd)
    if user is not None:
        login(request, user)
        return render(request, "taxnow/index.html")
    return render(request, "taxnow/Login.html")

我很確定在打印語句中沒有傳輸 POST 數據(TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'),但我不知道為什么。 (如前所述,HTML 位於 localhost 上,django 位於 127.0.0.1:8000 上。)這有什么原因嗎?

request.POST中,您沒有來自id屬性的鍵,而是來自name 將其添加到輸入中就可以了。

<input type="text" id="uname" name="uname"><br>
<input type="password" id="pass" name="pass"><br>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM