67
Open urls.py
and replace:
django.contrib.auth.views.login
with django.contrib.auth.views.LoginView
django.contrib.auth.views.logout
with django.contrib.auth.views.LogoutView
28
Your urlpatterns should be:
from django.contrib.auth import views as auth_views
urlpatterns = [
url( r'^login/$',auth_views.LoginView.as_view(template_name="useraccounts/login.html"), name="login"),
]
- [Django]-Adding a user to a group in django
- [Django]-Jquery template tags conflict with Django template!
- [Django]-Startapp with manage.py to create app in another directory
19
In django version 2.1 in custom urls patterns from auth app i use
from django.urls import path, re_path
from django.contrib.auth import views as auth_views
from django.conf import settings
from .views import register_view, activate
urlpatterns = [
# url(r'^$', HomeView.as_view(), name='home'),
re_path(r'^register/$', register_view, name='signup'),
re_path(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
activate, name='users_activate'),
re_path('login/', auth_views.LoginView, {
'template_name': "users/registration/login.html"},
name='login'),
re_path('logout/', auth_views.LogoutView,
{'next_page': settings.LOGIN_REDIRECT_URL}, name='logout'),
re_path(r'^password_reset/$', auth_views.PasswordResetView,
{'template_name': "users/registration/password_reset_form.html"},
name='password_reset'),
re_path(r'^password_reset/done/$', auth_views.PasswordResetDoneView,
{'template_name': "users/registration/password_reset_done.html"},
name='password_reset_done'),
re_path(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
auth_views.PasswordResetConfirmView,
{'template_name': "users/registration/password_reset_confirm.html"},
name='password_reset_confirm'),
re_path(r'^reset/done/$', auth_views.PasswordResetCompleteView,
{'template_name': "users/registration/password_reset_complete.html"},
name='password_reset_complete'),
]
- [Django]-Prepopulate Django (non-Model) Form
- [Django]-Serializer call is showing an TypeError: Object of type 'ListSerializer' is not JSON serializable?
- [Django]-Timestamp fields in django
8
Django 2.1 contrib views change from function view to class view and name also change so in forgot process you need to give other view name
urls.py
from django.contrib.auth import views as auth_views
path('password_reset/', auth_views.PasswordResetView.as_view(), {'template_name':'registration/Reset_email.html'}, name='password_reset'),
path('password_reset/done/', auth_views.PasswordResetDoneView.as_view(), {'template_name':'registration/Reset_Email_Sent.html'}, name='password_reset_done'),
re_path('reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/', auth_views.PasswordResetConfirmView.as_view(), {'template_name' : 'registration/Forgot_password.html'}, name='password_reset_confirm'),
path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), {'template_name' : 'registration/Signin.html'}, name='password_reset_complete'),
Django you can customize user model and you can remove username and use email address
models.py
user model you can write customize column you can add and you can delete
user manage also you can customize comond like super user if yo
u need to give any default value
from django.contrib.auth.models import User
from django.contrib.auth.models import AbstractUser,BaseUserManager
from django.utils.translation import ugettext_lazy as _
class UserManager(BaseUserManager):
"""Define a model manager for User model with no username field."""
use_in_migrations = True
def _create_user(self, email, password, **extra_fields):
"""Create and save a User with the given email and password."""
if not email:
raise ValueError('The given email must be set')
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, email, password=None, **extra_fields):
"""Create and save a regular User with the given email and password."""
extra_fields.setdefault('is_staff', False)
extra_fields.setdefault('is_superuser', False)
return self._create_user(email, password, **extra_fields)
def create_superuser(self, email, password, **extra_fields):
"""Create and save a SuperUser with the given email and password."""
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
if extra_fields.get('is_staff') is not True:
raise ValueError('Superuser must have is_staff=True.')
if extra_fields.get('is_superuser') is not True:
raise ValueError('Superuser must have is_superuser=True.')
return self._create_user(email, password, **extra_fields)
class User(AbstractUser):
username = None
email = models.EmailField(_('email'), unique=True)
first_name = models.CharField( _('first name'), max_length=250)
last_name = models.CharField(_('last name'), max_length=250)
email_confirmed = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'last_name',]
objects = UserManager()
def __str__(self):
return "%s" %(self.email)
settings.py
settings you need to give your custom user model
# AUTH USER MODEL
AUTH_USER_MODEL = "Accounts.User"
LOGIN_URL = '/login/'
#LOGIN_REDIRECT_URL = 'login_success'
LOGOUT_REDIRECT_URL = '/login/'
admin.py
admin you need to register user model
## user model view
from django.contrib.auth.admin import UserAdmin as DjangoUserAdmin
from django.utils.translation import ugettext_lazy as _
@admin.register(User)
class UserAdmin(DjangoUserAdmin):
"""Define admin model for custom User model with no email field."""
fieldsets = (
(None, {'fields': ('email', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name', 'email_confirmed')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
'groups', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'password1', 'password2', 'first_name', 'last_name'),
}),
)
list_display = ('email', 'first_name', 'last_name',)
search_fields = ('email', 'first_name', 'last_name')
ordering = ('-id',)
- [Django]-Django manage.py Unknown command: 'syncdb'
- [Django]-How do I restart celery workers gracefully?
- [Django]-How do I install an old version of Django on virtualenv?
7
You have to import the LoginView in your urls.py:
from django.contrib.auth.views import LoginView
and change
auth_view.login
to
LoginView.as_view()
- [Django]-ImportError: No module named django_filters
- [Django]-Django override default form error messages
- [Django]-Using Python's os.path, how do I go up one directory?
5
You need LoginView
, etc. as a class and not a function as seen here (new in Django 1.11 as Should
and a Must from Version 2.1 on)
- [Django]-Django edit user profile
- [Django]-Factory-boy create a list of SubFactory for a Factory
- [Django]-Django modifying the request object
5
Very Simple Steps:
Goto the Projects urls.py
change views.login
to views.LoginView.as_view()
if you are using Logout attribute then do the same with that
- [Django]-Pass request context to serializer from Viewset in Django Rest Framework
- [Django]-Django column "name" of relation "django_content_type" does not exist
- [Django]-Object does not support item assignment error
3
it should be:
url(r'^registration/$', views.registration, {'template_name': 'useraccounts/registration.html'}, name='registration'),
auth_views does not have registration, your views does
- [Django]-How to exempt CSRF Protection on direct_to_template
- [Django]-Is it safe to rename Django migrations file?
- [Django]-How to hide some fields in django-admin?
- [Django]-Django select only rows with duplicate field values
- [Django]-How can I handle Exceptions raised by dango-social-auth?
- [Django]-Django gunicorn sock file not created by wsgi
2
I can’t leave comments so I decided to leave an answer.
You have extra indent near else block. Your registration func should look like:
def registration(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save()
user.refresh_from_db()
user.profile.birth_date = form.cleaned_data.get('birth_date')
user.save()
raw_password = form.cleaned_data.get('password1')
user = authenticate(password=raw_password)
login(request, user)
return redirect('home')
else:
form = SignUpForm()
return render(request, 'registration.html', {'form': form})
This is why you get this error
The view useraccounts.views.registration didn’t return an HttpResponse object. It returned None instead.
- [Django]-Foreign key from one app into another in Django
- [Django]-<Django object > is not JSON serializable
- [Django]-Using mock to patch a celery task in Django unit tests
- [Django]-Django: Reference to an outer query may only be used in a subquery
- [Django]-How do I mock a django signal handler?
- [Django]-Django Rest Framework – Could not resolve URL for hyperlinked relationship using view name "user-detail"