#33357: SuccessMessageMixin doesn't work with LoginView
-------------------------------------+-------------------------------------
Reporter: Cihat Ertem | Owner: Baptiste
| Mispelon
Type: Bug | Status: closed
Component: contrib.messages | Version: 4.0
Severity: Normal | Resolution: needsinfo
Keywords: LoginView, | Triage Stage: Accepted
messages, SuccessMessageMixin |
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Baptiste Mispelon):
* status: assigned => closed
* resolution: => needsinfo
* component: contrib.auth => contrib.messages
Old description:
> I have a problem with `SuccessMessageMixin, LoginView`. There is no
> problem with `CreateView`:
> {{{#!py
> class CreateRoom(SuccessMessageMixin, CreateView):
> template_name = 'base/room_form.html'
> form_class = RoomForm
> success_url = reverse_lazy('home')
> success_message = 'Message'
> }}}
>
> I can capture and use 'Message' in template but with `LoginView`
> {{{#!py
> class Login(SuccessMessageMixin, LoginView):
> template_name = 'registration/login.html'
> success_url = reverse_lazy('home')
> success_message = 'Message!!!'
> }}}
>
> I can not capture 'Message' with `LoginView`.
New description:
I have a problem with SuccessMessageMixin, LoginView. There is no problem
with CreateView:
{{{#!py
class CreateRoom(SuccessMessageMixin, CreateView):
template_name = 'base/room_form.html'
form_class = RoomForm
success_url = reverse_lazy('home')
success_message = 'Message'
}}}
I can capture and use 'Message' in template but with LoginView
{{{#!py
class Login(SuccessMessageMixin, LoginView):
template_name = 'registration/login.html'
success_url = reverse_lazy('home')
success_message = 'Message!!!'
}}}
I can not capture 'Message' with LoginView.
project urls:
{{{#!py
urlpatterns = [
path('admin/', admin.site.urls),
path(, include('django.contrib.auth.urls')),
path(, include('base.urls')),
]
}}}
the base apps urls:
{{{#!py
# app_name = 'base'
urlpatterns = [
path(, views.Home.as_view(), name='home'),
path('room/<int:pk>/', views.Room.as_view(), name='room'),
path('create-room/', views.CreateRoom.as_view(), name='create-room'),
path('update-room/<int:pk>/', views.UpdateRoom.as_view(model=Room),
name='update-room'),
path('delete-room/<int:pk>/', views.DeleteRoom.as_view(model=Room),
name='delete-room'),
path('login/', views.Login.as_view(), name='login')
]
}}}
settings.py:
{{{#!py
INSTALLED_APPS = [
# Default django apps
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# My custom apps
'base.apps.BaseConfig',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'studybud.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates']
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'studybud.wsgi.application'
# Database
# https://docs.djangoproject.com/en/4.0/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# Password validation
# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-
validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME':
'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/4.0/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.0/howto/static-files/
STATIC_URL = 'static/'
# Default primary key field type
# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
# Login redirect
LOGIN_REDIRECT_URL = 'home'
LOGIN_URL = 'login'
}}}
--
Comment:
It turns out my initial tests were incorrect and I cannot actually
reproduce your issue.
Using `class MyView(SuccessMessageMixin, LoginView)` works fine for me,
there must be something else that's broken in your setup.
I've marked the ticket as "needs info" and restored your original
description. Could you reopen the ticket with some details on how to
reproduce your issue?
In particular, how do you display the messages in your templates.
Thanks.
--
Ticket URL: <https://code.djangoproject.com/ticket/33357#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/064.5036287ebcbc87ce780b581a6ed9d71e%40djangoproject.com.