我尝试在我的网站中设置用户个人资料,因此我们有:
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 ...
有两个问题:
对于第2点,我会这样做:
url(r'^aboutus/', 'site.views.aboutus'),
url(r'^(?P<profile>[0-9A-Fa-f]{1,36})/', 'site.views.profile),
所以现在配置文件将成为网站中其他所有内容的主要内容,我必须检查有效的配置文件,然后如果找不到密码则抛出404。
同样,还有更好的方法吗?
答案 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错误。