2014-12-30 19 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

你測試過了嗎?視圖必須返回HttpResponse,而不是另一個視圖函數 – doniyor

+1

這裏我使用django提供的[render](https://docs.djangoproject.com/en/1.7/topics/http/shortcuts/#render)捷徑。它本身返回一個HttpResponse對象。 – cziemba

+0

你確定嗎?我認爲''渲染'呈現RequestContext,但我的意思是HttpResponse,我的意思當然是你的''家庭''功能,而不是最後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條目加載與主頁或修改的主頁不同的模板,您可以輕鬆地呈現您想要的任何模板以響應url請求,而不是發出重定向