2015-02-27 1 views
0

Я заинтересован в создании моих URL-адресов для каждого пользователя, что-то вроде username.mysite.com/home, но я не уверен, как это сделать с помощью django.Как создать URL-адрес django, специфичный для пользователя?

Мне также интересно, если это может сработать в разработке (чтобы иметь username.localhost:8000/home) или нет.

спасибо.

+0

Вы можете попробовать django.site рамка – bhushya

+0

Нашел [djangosnippets] (https://djangosnippets.org/snippets/2062/) может помочь вам –

+0

@bhushya Сайтов рамки для нескольких иных потребительных случае , но это очень интересно, и это может пригодиться когда-нибудь, поэтому спасибо за предложение. – AdelaN

ответ

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' 
) 
+0

Что-то вроде этого урока - https://www.wellfireinteractive.com/blog/multi-tennancy-in-django-using-subdomains/? Или у вас есть лучшее предложение? – AdelaN

+0

Немного легче. Позвольте мне написать это быстро в коде для вас. –

+0

О, я понимаю, спасибо за обновление. Был ли тот факт, что я использую django-rest-framework, что-то меняет в поведении (за исключением того, что представление будет представлением drf)? – AdelaN

Смежные вопросы