2015-06-02 22 views
1

Ну, у меня есть мои собственные сеансы и процедуры проверки подлинности в моем приложении. Когда пользователь переходит на страницу app/login/, если он или она не входит в систему, он видит форму для отправки, в противном случае я хочу перенаправить пользователя на корневую страницу app/. Войти вид выглядит следующим образом:Как перенаправить на другую страницу

def index(request): 
    if sessionCheck(request): 
     # here I want to redirect one level above to app/ 
     pass 
    else: 
     template = loader.get_template('login/login.html') 
    ... other code which is not important 

В PHP, я думаю, я бы сделал это так:

header("Location: /"); 
exit; 

Но как я должен делать то же самое в Django?

ответ

1

Вы можете использовать функцию redirect ярлыка:

from django.shortcuts import redirect 
return redirect('some-view-name') 

Вы также можете указать URL, кроме именованного вида. Поэтому, если ваш индексный URL не имеет имени, вы можете указать '/'.

Эта функция быстрого доступа по существу the same as:

from django.http import HttpResponseRedirect 
from django.core.urlresolvers import reverse 
return HttpResponseRedirect(reverse('some-view-name')) 

Для того, чтобы иметь именованный вид, в вашем urls.py вы должны предоставить name аргумент. Например:

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^some-view$', views.something, name='some-view-name'), 
] 

Подробнее о том, что на Django tutorial, Django URL dispatcher.

+0

Вы можете, пожалуйста, сообщите мне, как я должен установить именованный вид? Я никогда с ними не сталкивался. – Jacobian

+0

О, я понял и сделал это! Спасибо, сэр! Через пять минут я помету ваш ответ как решение. – Jacobian

+0

Я очень рад, приветствую сэр! Я обновил ответ. – Wtower

1

Вы можете использовать redirect

if sessionCheck(request): 
    redirect(your_url) 
else: 
    ... 
+0

Спасибо! Это было полезно! – Jacobian

Смежные вопросы