Вы попытались использовать -d
опция? (создайте подкаталоги)
, Насколько я могу помнить, это подразумевается для cvs co
, но не для cvs up
.
Я думаю, что это может быть хорошим вариантом использования django.contrib.sites в сочетании со вторым пунктом маркера, который вы упомянули. Вы можете создать модель CustomUser следующим образом:
from django.contrib.sites.models import Site
class CustomUser(User):
"""User with app settings."""
sites = models.ManyToManyField(Site)
Затем вы можете написать собственный сервер аутентификации, чтобы проверить, может ли пользователь войти в текущий субдомен, используя предоставленные учетные данные. Это позволяет вам иметь одно имя пользователя для нескольких сайтов (поддоменов) без необходимости взламывать внутреннее приложение аутентификации или хранить несколько имен пользователей с настраиваемыми префиксами.
ИЗМЕНИТЬ : вы можете получить текущий сайт, используя Site. objects.get_current ()
, а затем проверьте, находится ли текущий сайт на сайтах пользователя.
Вы можете узнать больше о структуре сайтов здесь: http://docs.djangoproject.com/en / dev / ref / contrib / sites /
]Я создавал эту функциональность для нескольких сайтов в прошлом и обнаружил, что ваша первая пулевая точка - это путь.[
] []Это означает, что вам не придется вносить массивные изменения в django auth. Что я сделал, так это настроил пользовательский бэкэнд аутентификации, который абстрагируется от способа хранения имен пользователей.[
] [auth_backends.py
from django.contrib.auth.backends import ModelBackend
from Home.models import Account
class CustomUserModelBackend(ModelBackend):
def authenticate(self, subdomain, email, password):
try:
user = Account.objects.get(username=u'%s.%s' % (subdomain, email))
if user.check_password(password):
return user
except Account.DoesNotExist:
return None
def get_user(self, user_id):
try:
return Account.objects.get(pk=user_id)
except Account.DoesNotExist:
return None
]
[]Для этого конкретного проекта []Учетная запись [
] была пользовательской моделью, и она просто унаследована непосредственно от пользователя, однако вы можете заменить []Учетную запись [
] на все, что захотите. [
]Вы должны установить пользовательский бэкэнд auth в файл настроек:[
] [AUTHENTICATION_BACKENDS = (
'auth_backends.CustomUserModelBackend',
'django.contrib.auth.backends.ModelBackend',
)
]
[]Затем, когда вы вызываете []аутентификацию[
], вам нужно будет пройти в субдомен, адрес электронной почты и пароль.[
]Вы также можете добавить некоторые другие вспомогательные функции или методы моделирования, которые помогут убедиться, что отображается только действительное имя пользователя, но это все довольно банально.[
].