如何创建特定于用户的django网址?

时间:2015-02-27 09:44:51

标签: django url prefix

我有兴趣为每个用户定制我的网址,例如 username.mysite.com/home但我不知道如何用django做到这一点。

我也很好奇这是否可以在开发中使用(以便有username.localhost:8000/home)。

谢谢。

1 个答案:

答案 0 :(得分:1)

还有另一种方式。您可以做的是拥有获取URL的中间件,解析子域,然后呈现用户个人资料页面。

这假设您使用的是自定义个人资料页面,而不是默认个人资料页面。

#in yourapp.middleware
from django.contrib.auth.models import User
import logging
import yourapp.views as yourappviews
logger = logging.getLogger(__name__)
class AccountMiddleware(object):

def process_request(self, request):
    path = request.META['PATH_INFO']
    domain = request.META['HTTP_HOST']
    pieces = domain.split('.')
    username = pieces[0]
    try:
        user = User.objects.get(username=username)
        if path in ["/home","/home/"]:
            return yourappviews.user_profile(request, user.id)

#In yourapp.views.py

def user_profile(request,id):
    user = User.objects.get(id=id)
    return render(request, "user_profile.html", {"user": user})

#In settings.py

MIDDLEWARE_CLASSES = (
    #... other imports here
    'yourapp.middleware.AccountMiddleware'
)