2015-01-02 4 views
2

사용자가 로그인하면 HttpResponseRedirect가 "/ welcome /"URL로 리디렉션됩니다. 그러나 또한 사전에 템플릿을 전달하고자 할 때 아래에 주석으로 표시된 문을 반환하고 싶습니다. 이 두 문장이나 다른 솔루션을 결합하는 방법을 도와주세요.HttpResponseRedirect와 render_to_response를 결합하는 방법은 무엇입니까?

Views.py는

def home(request): 
     templatename="login.html" 
     if request.method=="POST": 
      u=request.POST.get("username")  
      p=request.POST.get("password") 
      user=authenticate(username=u, password=p) 
      if user is not None: 
       if user.is_active: 
        print "This User is valid, active and authenticated" 
        login(request,user) 
        state = "You're successfully logged in!" 
        return HttpResponseRedirect("/welcome/") 
        #return render_to_response(templatename,{'state':state, 'user':user}, context_instance=RequestContext(request)) 


       else: 
        print "This User is valid but the account has been disabled" 
        state="This User is valid but the account has been disabled" 

      else: 
       print "The Username and Password entered were incorrect" 
       state = "Your username and/or password were incorrect." 
       #return render_to_response(templatename,{'state':state, 'user':user}, context_instance=RequestContext(request)) 

     else: 
      user=None 
      state=None 

     return render_to_response(templatename, {'state':state, 'user':user}, context_instance=RequestContext(request)) 

답변

5

당신은 그것을 위해 메시지 프레임 워크를 사용할 수 있습니다 .. from django.contrib import messages

views.py

messages.success(request, "You're successfully logged in!") 
return HttpResponseRedirect("/welcome/") 

또 다른 옵션은 단지에 대한 세션을 사용하는 것입니다. ! 그러나 세션에서 메시지를 표시 한 후 메시지를 숨기는 방법을 찾을 수 있습니다.

#views.py 
request.session['state'] = "You're successfully logged in!" 
HttpResponseRedirect("/welcome/") 
#html 
{{ request.session.state }} 
+0

이 메시지는 어디에 표시됩니까? 우리는 HttpResponseRedirect를 반환하지 않아도됩니까? – TheHardRock

+0

[displaying-messages] (https://docs.djangoproject.com/ko/1.7/ref/cont//messages/#displaying-messages) –

관련 문제