在Django中执行用户配置文件

时间:2014-07-02 17:14:30

标签: django django-views

我尝试在我的网站中设置用户个人资料,因此我们有:

  

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. 我应该如何处理其他网址,例如&#34; aboutus&#34;等
  3. 对于第2点,我会这样做:

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

    所以现在配置文件将成为网站中其他所有内容的主要内容,我必须检查有效的配置文件,然后如果找不到密码则抛出404。

    同样,还有更好的方法吗?

2 个答案:

答案 0 :(得分: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 -

好的,好的。那么,你是对的。但为什么不用用户名?

帐户/ urls.py

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

答案 1 :(得分: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'),

对于catchall,使用自定义404页面,或者您可以让服务器引发404错误。