0
我的目標是檢查用戶是否登錄了。如果用戶的類型是「special」,那麼我想將該用戶重定向到一個單獨的頁面,稱爲儀表板(誰視圖在一個單獨的應用程序)。如果用戶不特殊,則會呈現常規成功頁面。瀏覽器沒有呈現對成功的Django重定向的響應
普通用戶的情況完美,但特殊用戶的情況失敗。從使用調試器和Chrome的網絡檢查器,我注意到Django成功執行重定向,並將正確的HTML響應返回給瀏覽器,但瀏覽器在顯示該頁面時不採取任何行動。 Chrome網絡檢查器上的網絡標籤向服務器顯示了兩個不同的請求 - 原始登錄請求以及重定向到儀表板的請求。
我該怎麼做才能確保瀏覽器顯示儀表板?
這裏是views.py登錄功能:
def login(request):
if request.method == 'GET':
return render_home(request, {'login_required': True})
errors = []
email = request.POST['email']
password = request.POST['password']
user = authenticate(username=email, password=password)
if user is not None:
if user.is_active:
auth_login(request, user)
else:
errors = ["User isn't active"]
else:
errors = ["User couldn't be authenticated"]
if (user.is_special):
url = reverse('special.views.dashboard')
return HttpResponseRedirect(url)
template = loader.get_template('users/login.js')
context = Context({"errors": errors})
return HttpResponse(template.render(context), mimetype="text/javascript")
這是在特殊的應用程序的views.py儀表盤功能:
@login_required
def dashboard(request):
user = request.user
special_data = get_special_data(user)
data = {'user': user, 'special_data': special_data}
return render(request, 'special_dashboard.html', data)
謝謝,你是對的!我決定通過在現有的javascript響應中設置window.location.href變量來重定向,而不是通過Django重定向。 – impasnuj