从Django服务视图发送数据到JavaScript(Chrome扩展)

2024-03-28 12:55:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在发送电子邮件和密码从chrome扩展到django服务,以检查电子邮件和密码是否存在于数据库中。接下来,我必须将django服务的响应发送到java脚本(chrome扩展)。你知道吗

chrome扩展中的javascript:

document.addEventListener('DOMContentLoaded', loginEvents, false);

function myAction(femail,fpassword) {
    //alert("femail=" + femail.value + "fpassword=" +fpassword.value);
    var strLogin = "email=" + femail.value + "&password=" + fpassword.value;
    if (femail.value == ""){
        alert("Username must be filled out");
        return false;
    }
    if (fpassword.value == ""){
        alert("Password must be filled out");
        return false;
    }
    var newxmlhttp = new XMLHttpRequest();
    var theUrl = "http://127.0.0.1:8000/polls/login/?";
    newxmlhttp.open("POST", theUrl, true);

    newxmlhttp.onreadystatechange = function() {
        if (newxmlhttp.readyState == 4){
            alert("entered");
        }
        else{
            alert("not entered");
        }

    };
    newxmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
    newxmlhttp.send(strLogin);
}
function loginEvents() {
    console.log("entered console");
    var loginSubmitButton = document.getElementById('loginSubmit')
    loginSubmitButton.addEventListener('click', 
    function(event) {
        var userEmail = document.getElementById('email');
        var userPassword = document.getElementById('password');
        myAction(userEmail,userPassword);
    });
}

你知道吗视图.py地址:

from django.http import HttpResponse
from django.http import HttpResponseRedirect, HttpResponse
from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import render
from .models import UserProfile
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def login(request):
  print(request.method)
  useremail = request.POST.get('email')
  userpassword = request.POST.get('password')
  print('email %s %s' % (useremail,userpassword))
  try:
    /* to check the data is present in database or not */ 
    entry = UserProfile.objects.get(email=useremail,password=userpassword)
    print('matched== %s %s' %(useremail,userpassword))
    return HttpResponse('hello %s' % useremail)
  except ObjectDoesNotExist:
    print('email not matched')

我能够在Django中获得从chrome扩展发送的数据,但是我不知道如何从Django发送数据到chrome扩展。我知道如何在由Django服务发送的chrome扩展中获取数据,但我不知道如何从Django发送数据。你知道吗


Tags: djangofromimportvalueemailvarfunctionpassword
1条回答
网友
1楼 · 发布于 2024-03-28 12:55:04

您可以在响应处理程序中获得如下服务器响应:

    newxmlhttp.onreadystatechange = function() {
        if (newxmlhttp.readyState == 4){
            // Alert response
            alert(newxmlhttp.responseText);
        }
    };

更新:

将数据添加到响应中,我认为使用JSON数据将非常容易:

from django.http import HttpResponse, JsonResponse
from django.http import HttpResponseRedirect, HttpResponse
from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import render
from .models import UserProfile
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def login(request):
  print(request.method)
  useremail = request.POST.get('email')
  userpassword = request.POST.get('password')
  print('email %s %s' % (useremail,userpassword))
  try:
    /* to check the data is present in database or not */ 
    entry = UserProfile.objects.get(email=useremail,password=userpassword)
    print('matched== %s %s' %(useremail,userpassword))
    return JsonResponse({"status": "ok", "message": 'hello %s' % useremail}, status=200)
  except ObjectDoesNotExist:
    return JsonResponse({"status": "fail", "message": 'email not matched'}, status=400)

相关问题 更多 >