@ellz

Как лучше сделать регистрацию в djnago?

При первом выполнении команды migrate, django создает в БД несколько таблиц, среди которых auth_user. Там хранятся данные о пользователе. Но если мне нужно, чтобы там было больше данных? Например, если мне нужен номер телефона: лучше создать новое поле в этой таблице или создать новую таблицу с номерами телефонов привязанными к auth_user? Или может вообще лучше создать свою таблицу с пользователями и регистрировать их с помощью процедур в БД, а не чем-то подобным:
def signup(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            my_password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=my_password)
            login(request, user)
            return redirect('home')
    else:
        form = SignUpForm()
    return render(request, 'signup.html', {'form': form})

Еще вопрос:
{% if user.is_authenticated %}
<form id="logoutForm" action="/logout" method="post" class="navbar-right">
    {% csrf_token %}
    <ul class="nav navbar-nav navbar-right">
        <li><span class="navbar-brand">Hello {{ user.username }}!</span></li>
        <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
    </ul>
</form>

{% else %}

<ul class="nav navbar-nav navbar-right">
    <li><a href="{% url 'login' %}">Log in</a></li>
</ul>

{% endif %}

{% if user.is_authenticated %}#откуда django вообще берет user, если я этого не в одной функции не передаю?
работает со стандартной таблицей auth_user? Тогда, если делать все кастомным, то это нужно будет передавать через context как переменную? Как тогда сделать так, чтобы после перезагрузки страницы или после редеректа пользователь не вылетал? И часто ли делают аутентификацию не стандартным способом(LoginView)?

P.S.
посмотрел много уроков и на русском и на английском - ничего чтобы мне помогло бы не нашел
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы