django เข้าสู่ระบบและเปลี่ยนเส้นทางด้วยตนเอง

ฉันมีมุมมองที่จัดการการลงทะเบียนผู้ใช้ หลังจากสร้างผู้ใช้ใหม่แล้ว ฉันต้องการตรวจสอบสิทธิ์ด้วยตนเองและเข้าสู่ระบบ:

def register(request):
    ...

    ...
    if form.is_valid():
        username = form.cleaned_data['username']
        password = form.cleaned_data['password1']
        email = ''
        newuser = User.objects.create_user(username, email, password)
        user = authenticate(username=username, password=password)
        login (request, user)

ฉันได้ตั้งค่า LOGIN_REDIRECT_URL เป็น '/profile/' แต่หลังจากตรวจสอบสิทธิ์และเข้าสู่ระบบผู้ใช้แล้ว ระบบจะเปลี่ยนเส้นทางฉันกลับไปยังมุมมองเดิม ไม่ใช่ /profile/ เพราะเหตุใด และฉันจะระบุตำแหน่งที่จะเปลี่ยนเส้นทางหลังจากเข้าสู่ระบบได้อย่างไร? ถ้าฉันเพิ่ม

HttpResponseRedirect('/profile/')

หลังจากเข้าสู่ระบบ - ไม่มีอะไรเกิดขึ้น สคริปต์ไม่เคยจบลงที่นั่น

อลัน.


person Odif Yltsaeb    schedule 02.04.2010    source แหล่งที่มา


คำตอบ (1)


คุณต้อง ส่งคืน วัตถุ HttpResponse:

return HttpResponseRedirect('/profile/')
person jholster    schedule 02.04.2010
comment
ฉันรู้ว่าฉันเขียน HttpResponseRedirect ในคำถามของฉันโดยไม่ส่งคืนข้างหน้า แต่ในโค้ดของฉันมันส่งคืน เดาว่าฉันพิมพ์ผิดที่อื่น... พิมพ์ผิดที่ไม่ได้ทำให้เกิดข้อผิดพลาดใช่ไหม แปลก..โอ้โห... - person Odif Yltsaeb; 02.04.2010
comment
น่าแปลกที่ควรมีข้อผิดพลาดเกิดขึ้นหากไม่มีการส่งคืน HttpResponse จากฟังก์ชันมุมมอง อืม... ฉันเดาว่าคุณเปิดใช้งานมิดเดิลแวร์เซสชันแล้วใช่ไหม - person jholster; 02.04.2010
comment
ฉันไม่ได้วางมุมมองทั้งหมดที่นี่ มีการ return render_to_response ในส่วนท้ายของมุมมอง ดังนั้นจึงไม่มีข้อผิดพลาดเนื่องจากไม่มีการ return ฉันคิดว่าฉันทำสิ่งเล็กๆ น้อยๆ มากมายที่สรุปเป็นพฤติกรรมแปลกๆ อย่างน้อยฉันก็คิดว่าฉันคิดเรื่องนี้ด้วยตัวเองแล้ว: P - person Odif Yltsaeb; 02.04.2010