class ApiLoginView(TemplateView):
template_name = 'index.html'
def post(self,request):
email = request.POST.get('Email')
password = request.POST.get('Password')
print(email)
print(password)
API_KEY = GetAPIkey().api_key_token()
API_URL = GetAPIurl().api_url_token()
parameter = {
'authToken':API_KEY,
'email':email,
'password':password,
}
url = '{}{}'.format(API_URL,'/rest/storeLogin')
r = requests.post(url = url, params=parameter)
print(r.url)
print(request.user)
return HttpResponse(r)
Run Code Online (Sandbox Code Playgroud)
我正在尝试从request.POST方法获取数据,但每次打印电子邮件和密码时它都会向我发送NONE值.我哪里错了?我在做ajax通话错了吗?当我使用表单submi进行ajax调用它工作正常但现在我使用按钮单击进行ajax调用.
<form class="my-login-form" id="sanjh_login_form" method="post" url="/login">
{% csrf_token %}
<div id="login-data"></div>
<div class="field-wrap">
<input id='id_login-email' type="email" name="Email" required autocomplete="off" placeholder="Email Id">
</div>
<div class="field-wrap">
<input id='id_login-password' type="password" name="Password" required autocomplete="off" placeholder="Password">
</div>
<button id="login-btn" type="button" class="button button-block" >Login</button>
<div class="forgot"><a class="user-form-toggle" href="#forgot">Forgot Password?</a></div>
</form>
Run Code Online (Sandbox Code Playgroud)
ajax电话
<script>
$(document).ready(function(){
$('#login-btn').click(function(event){
console.log('hi-login')
$.ajax({
method: "POST",
url: '/login',
data: {
email : $('#id-login-email').val(),
password : $('#id-login-password').val(),
csrfmiddlewaretoken:'{{ csrf_token }}'
},
success: function(res) {
var response = $.parseJSON(res)
console.log(response.msg)
$('#login-data').html(response.msg);
},
})
})
})
</script>
Run Code Online (Sandbox Code Playgroud)
我会告诉你如何调试这些问题,而不是用代码给出答案:
由于这些值None可以得出结论,您的ajax调用不会传递"电子邮件"和"密码"键.实际上,当我查看您的代码时,您的ajax数据将设置为"email"和"password".这是你的第一个错误.
接下来,您打印request.POST并看到即使是"电子邮件"和"密码"也未通过.看看如何从表单中获取值,我看到你正在寻找id的"id-login-email"和"id-login-password",这些在你的HTML中不存在(你有"id_login-email" "和"id_login-password").所以这是你的第二个错误.
如果还有更多问题,请尝试在javascript中设置断点(例如在线上$.ajax)并使用控制台检查您分配的值,例如$(#id_login-email).val()在控制台中键入以检查它是否正确.
最后,始终在post()方法中打印或添加断点以查看内容request.POST,这是了解客户端实际提交内容的最佳方式.
| 归档时间: |
|
| 查看次数: |
1257 次 |
| 最近记录: |