我試圖在成功登錄后回應 ajax,但另一方面,我想根據用戶組態檔進行檢查,它將重定向到組態檔。
以下是我在 views.py 中的功能
@csrf_exempt
def login_view(request):
next = request.GET.get('next')
email = request.POST.get("email")
password = request.POST.get("password")
user = authenticate(username=email, password=password)
if user is not None and user.is_active:
login(request,user)
if user.is_male:
return redirect('/male_profile')
elif user.is_female:
return redirect('/female_profile')
elif user.is_other:
return redirect('/other_profile')
data_json = {"error" : False, "errorMessage" : "Login Successful!"}
return JsonResponse(data_json, safe=False)
else:
data_json={"error":True,"errorMessage":"Username or password is incorrect!"}
return JsonResponse(data_json,safe=False)
我面臨的問題是它只回傳 Ajax 回應或重定向到基于用戶的組態檔......但不能同時回傳。任何人都可以幫我解決如何首先將回應發送到 ajax,然后根據用戶個人資料將其重定向到 views.py 中的另一個頁面?謝謝。
uj5u.com熱心網友回復:
在這里,您將回傳 JSON 回應,因此您無法重定向,但這可以按如下方式完成:
@csrf_exempt
def login_view(request):
next = request.GET.get('next')
email = request.POST.get("email")
password = request.POST.get("password")
user = authenticate(username=email, password=password)
if user is not None and user.is_active:
login(request,user)
if user.is_male:
redirect = 'male_profile'
elif user.is_female:
redirect = 'female_profile'
elif user.is_other:
redirect = 'other_profile'
data_json = {"error" : False, "errorMessage" : "Login Successful!",
"redirect": redirect}
return JsonResponse(data_json, safe=False)
else:
data_json={"error":True,"errorMessage":"Username or password is incorrect!"}
return JsonResponse(data_json,safe=False)
在回應的 HTML(在客戶端)中,成功檢查回應中的重定向鍵并在回應成功條件中添加重定向
if (response.redirect){
location.href = response.redirect;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/359828.html
標籤:Python 姜戈 阿贾克斯 django 模型 django-views
上一篇:使用Datatable.js時,如何將我點擊的頁面編號發送回我的后端?(有一些小問題)
下一篇:無法在php中啟動類
