Пользователь не существует и нет перенаправления на созданного арендатора в проекте django

У меня есть приложение в 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', )
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
515
1

Ответы 1

re: Ошибка пользователя не существует - Согласно вашей функции просмотра регистрации, запись пользователя создается в общедоступной схеме. Но когда вы пытаетесь войти в test.localhost, схема test используется для всех запросов к БД. Вы можете переключать схемы, например -

from tenant_schemas.utils import schema_context

with schema_context(customer.schema_name):
    # create your user here.

Другие вопросы по теме