2014-12-30 2 views
1

Я работаю над проектом Django, в котором я планирую создавать профили пользователей. Моя цель - иметь стандартную страницу входа, как показано here. После входа в систему, однако, я хочу, чтобы переопределитьПереопределение дома в django

url(r'^$', 'MyApp.views.home', name='home'), 

не показывать эту страницу, но профиль пользователя с тем же URL, как дома.

Например, www.example.com показывает экран входа в систему. После входа в систему вы перенаправляетесь на сайт www.example.com, но теперь видите свой профиль.

Как это сделать в Django?

+1

В файле 'view' вы бы проверить, если пользователь вошел в систему или нет, и ветви соответственно. – dursk

ответ

0

Это как раз то, как я буду заниматься этим. Вы можете добавить контекст, если это необходимо.

views.py:

from django.shortcuts import render 

def home(request): 
    if request.user.is_authenticated(): 
     return user_home(request) 
    else: 
     return login_home(request) 

def user_home(request) 
    return render(request, 'path/to/user_template.html') 

def login_home(request) 
    return render(request, 'path/to/login_template.html') 
+0

Вы его протестировали? view должен возвращать HttpResponse, а не другую функцию представления – doniyor

+1

Здесь я использую ярлык (https://docs.djangoproject.com/en/1.7/topics/http/shortcuts/#render), который предоставляет django. Он возвращает объект HttpResponse. – cziemba

+0

вы уверены? Я думал, что '' render'' делает RequestContext, но я имел в виду HttpResponse, и поэтому я имел в виду, конечно, вашу функцию '' home'', а не последнюю 2. – doniyor

1

Вам нужно просто проверить в виду:

if request.user.is_authenticated(): 
    return HttpResponseRedirect('/profileurl/') 
1

Самый простой способ сделать это было бы перенаправление на другой вид:

MyApp.views

def home(request): 
    if request.user.is_authenticated(): 
    redirect 
    else: 
    home page 

Если вы хотите фактический адрес запись для загрузки другого шаблона, чем на домашней странице, или измененная домашняя страница, вы могли бы легко отобразить любой шаблон, который вы хотели в ответ на запрос URL, вместо того, чтобы redirect

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