2009-05-25 8 views
0

Ich habe ein Formular mit 2 Tasten. Abhängig von der Schaltfläche klicken Benutzer zu anderen URL übernommen. -View-Funktion ist:HttpResponseRedirect django + facebook

friend_id = request.POST.get('selected_friend_id_list') 

history = request.POST.get('statushistory') 
if history: 
    print "dfgdfgdf" 
    return HttpResponseRedirect('../status/') 

else: 
    return direct_to_template(request, 'friends_list.fbml', 
          extra_context={'fbuser': user, 
             'user_lastname':user_lastname, 
             'activemaintab':activemaintab, 
             'friends':friends, 
             'friend_list':friend_list}) 

für Vorlage:

<input type="submit" value="Calendar View" name="calendarview"/> 
<input type="submit" value="Status History" name="statushistory"/> 
</form 

so mein Problem ist Seite nicht auf die URL wird umgeleitet wird. Wenn ich HttpResponseRedirect ('../') mache, gibt es mir die korrekte Seite aber URL ändert sich nicht.

current page = „friend/status/ so nach meinem url Vorlage bildet frinedlist sein sollte/Liste/ so sollte diese Arbeit HttpResponseRedirect ('../ Liste /'), aber url nicht geändert zu werden. Jede Idee ? Wie kann ich dieses Problem beheben Dank

+0

Funktioniert HttpResponseRedirect ('/ friendlist/list /')? Trotzdem ist es besser, die umgekehrte Methode zu verwenden: http://docs.djangoproject.com/en/1.0/topics/http/urls/#reverse –

Antwort

0

Warum Sie relative URLs benutzen? können Sie nicht absolute URLs verwenden?

+0

FYI http://code.djangoproject.com/ticket/987 –

2

„so ist mein Problem Seite wird Umleitung nicht auf die uRL tun müssen. Wenn ich HttpResponseRedirect ('../') mache, gibt es mir die richtige Seite, aber URL ändert sich nicht. "

Mit" URL "vermute ich meinen Sie" Die URL im Browser angezeigt. "Es hilft, wenn Ihre Frage ist sehr präzise.

Zuerst Sie eine absolute URL zur Verfügung stellen muss. http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponseRedirect

Es ist ganz von den Standards (RFC 2616, Abschnitt 14.30) klar, dass eine absolute URL erforderlich ist. kann Einige Browser eine relative tolerieren URL: Einige nicht.

Zweitens sollten Sie nie relative URLs in Ihren Programmen verwenden.

Sie sollten reverse verwenden.

from django.core.urlresolvers import reverse 

def myview(request): 
    theURL= reverse('path.to.viewFunction') 
    return HttpResponseRedirect(theURL) 
Verwandte Themen