Signup/login/logout com Django

Gerenciamento de login com Django
Voltar

Passo a passo

  1. Criar pasta do projeto ('blog'): django-admin startproject blog
  2. Na pasta do projeto, criar aplicação ('main'): python3 manage.py startapp main
  3. Criar e editar arquivos, conforme códigos abaixo
  4. Criar Migrations: python3 manage.py makemigrations
  5. Executar Migrations: python3 manage.py migrate
  6. Executar projeto: python3 manage.py runserver (Acessar localhost:8000)

Arquivos


(Editar array e inserir trechos) blog/settings.py:


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'main',
]

LOGIN_REDIRECT_URL='home'
LOGOUT_REDIRECT_URL='login'

blog/urls.py:


from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/',include('django.contrib.auth.urls')),
    path('',include('main.urls')),
]

main/templates/registration/login.html:


<h1>Login</h1>
{% if messages %}
    {% for message in messages %}
        {{message}}
    {% endfor %}
{% endif %}

<form method="post">
    {% csrf_token %}
    {{form}}
    <input type="submit">
</form>
<a href="{% url 'home' %}">Cancelar</a>

main/templates/registration/register.html:


<h1>Registrar</h1>
{% if messages %}
    {% for message in messages %}
        {{message}}
    {% endfor %}
{% endif %}

<form method="post">
    {% csrf_token %}
    {{form}}
    <input type="submit">
</form>
<a href="{% url 'home' %}">Cancelar</a>

main/templates/home.html:


<h1>UB Social</h1>

{% if user.is_authenticated %}
    Usuário logado
    <a href="{% url 'logout' %}">{{request.user}} (logout)</a>
{% else %}
    Usuário não logado
    <a href="{% url 'login' %}">Login</a>
    <a href="{% url 'register' %}">Register</a>
{% endif %}

main/urls.py:


from django.urls import path
from . import views

urlpatterns=[
    path('',views.home,name='home'),
    path('accounts/register/',views.register,name='register')
]

main/views.py:


from django.shortcuts import render
from django.contrib import messages
from django.contrib.auth.forms import UserCreationForm

def home(request):
    return render(request,'home.html')

def register(request):
    form=UserCreationForm
    if request.method=='POST':
        regForm=UserCreationForm(request.POST)
        if regForm.is_valid():
            regForm.save()
            messages.success(request,'Usuário registrado!')
    return render(request,'registration/register.html',{'form':form})

Elaborado por Mateus Schwede
ubsocial.github.io