У меня есть приложение в django 1.11, в котором я использую схемы django-tenant-schemas (https://github.com/bernardopires/django-тенант-схемы) для создания учетной записи для пользователя. После создания клиента, схемы и domain_url пользователь не перенаправляется на адрес, указанный в domain_url.
Например: у меня в форме domain_url = test.localhost. После создания учетной записи я все еще нахожусь на локальном хосте вместо test.localhost.
Когда я захожу на test.localhost, я получаю панель входа. Я вхожу с данными, которые указал при создании, но получаю сообщение о необходимости ввести правильные данные. Я проверяю базу данных с помощью оболочки - пользователь существует.
Пользователь подключается к Компании с помощью ForeignKey.
аккаунты/view.py
def signup(request):
if request.method == 'POST':
company_form = CompanyForm(request.POST, prefix='company')
user_form = SignUpForm(request.POST, prefix='user')
if company_form.is_valid() and user_form.is_valid():
company_form.instance.name = company_form.cleaned_data['name']
company_form.instance.domain_url = company_form.cleaned_data['name'] + '.localhost'
company_form.instance.schema_name = company_form.cleaned_data['name']
company = company_form.save()
user_form.instance.company = company
user = user_form.save()
auth_login(request, user)
return HttpResponseRedirect(reverse('post:post_list'))
else:
company_form = CompanyForm(prefix='company')
user_form = SignUpForm(prefix='user')
args = {}
args.update(csrf(request))
args['company_form'] = company_form
args['user_form'] = user_form
return render(request, 'accounts/signup.html', args)
Формы для создания компании и пользователя:
class CompanyForm(forms.ModelForm):
name = forms.CharField(label='Company', widget=forms.TextInput(attrs = {'autofocus': 'autofocus'}))
class Meta:
model = Company
fields = ('name',)
class SignUpForm(UserCreationForm):
email = forms.EmailField(max_length=254, required=True, widget=forms.EmailInput())
class Meta:
model = User
exclude = ('company', )
fields = ('email', 'password1', 'password2', )






re: Ошибка пользователя не существует -
Согласно вашей функции просмотра регистрации, запись пользователя создается в общедоступной схеме. Но когда вы пытаетесь войти в test.localhost, схема test используется для всех запросов к БД. Вы можете переключать схемы, например -
from tenant_schemas.utils import schema_context
with schema_context(customer.schema_name):
# create your user here.