2014-07-02 124 views
0

我試圖建立用戶配置文件在我的網站,所以我們有:做用戶配置文件在Django中

www.example.com/someuser

www.example.com/anotheruser2

在我的urls.py

url(r'^(?P<profile>[0-9A-Fa-f]{1,36})/', 'site.views.profile), 

和我的觀點

def profile(request, profile): 
    ... do something ... 

有兩個問題:

  1. 這是爲了做到這一點,正確的做法還是有更好的辦法?
  2. 我應該如何處理其他網址,如「關於我們」等

對於第2點,我會做:

url(r'^aboutus/', 'site.views.aboutus'), 
url(r'^(?P<profile>[0-9A-Fa-f]{1,36})/', 'site.views.profile), 

所以,現在的個人資料將是一切都在別人的包羅萬象網站,我必須檢查一個有效的配置文件,然後拋出404如果沒有找到密碼。

再一次,有沒有更好的方法來做到這一點?

回答

0

這不是用site.views.profile作爲一個包羅萬象的一個好主意。這不是很好的責任分離,它不應該是它的工作。怎麼樣這樣的事情,而不是:

url(r'^profile/$', 'site.views.profile_self'), 
url(r'^profile/(?P<profile_name>[0-9A-Fa-f]{1,36})/$', 'site.views.profile'), 
url(r'^aboutus/', 'site.views.aboutus'), 

對於包羅萬象,使用自定義404錯誤頁面,或者你可以讓服務器提出一個404錯誤。

+0

我看到瓦特/這個解決方案是我有問題建立www.example.com/profile/someuser要求是www.example.com/someuser – Paul

+0

如果這是一個*硬性要求*,那麼你就沒有選擇的餘地,除了做你建議。但這是糟糕的設計,因爲它妨礙你正確地分開責任。 – janos

0

賬戶/ models.py

from django.db import models 

class User(): 
    def get_profile(self): 
     return UserProfile.objects.get_or_create(user_id=self.id) 

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    # another fields 

賬戶/ urls.py

url(r'^profile/$', 'site.views.profile'), 

賬戶/ views.py

from django.contrib.auth.decorators import login_required 

@login_required 
def profile(request): 
    # get current logged user profile 
    profile = request.user.get_profile() 

通過這種方式,只有用戶登錄才能看到他自己的檔案。

對於第2點,這有什麼問題?

url(r'^about_us/$', 'site.views.about_us'), 

--UPDATE--

啊,OK。那麼,你是對的。但爲什麼不用用戶名?

賬戶/ urls.py

url(r'^(?P<username>[-\w]+)/$', 'site.views.profile'), 
+0

我看到瓦特/這個解決方案的問題是,我將不得不建立www.example.com/profile/someuser要求是www.example.com/someuser – Paul

相關問題