When I established a connection with MYSQL for the existing django data and trying to create a super user, above issue is raising. I cleared the db.sqlite3 database and it's migrations also
models.py:
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
name = models.CharField(max_length=20, null=True)
email = models.EmailField(unique=True, null=True)
bio = models.TextField(max_length=200, null=True)
avatar = models.ImageField(null=True, default="avatar.svg")
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
forms.py:
from django.forms import ModelForm
from django.contrib.auth.forms import UserCreationForm
from .models import Room, User
class MyUserCreationForm(UserCreationForm):
class Meta:
model=User
fields= ['name', 'username', 'email', 'password1', 'password2']
class UserForm(ModelForm):
class Meta:
model=User # assigning 'User' table or class from the models(db)
fields = ['avatar', 'name', 'username', 'email', 'bio']
views.py:
def loginPage(request):
page = 'login'
if request.user.is_authenticated:
return redirect('home')
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
try:
user = User.objects.get(username=username)
except:
messages.error(request, 'Incorrect Username')
user=authenticate(request, username=username, password=password)
#If cond to check the correct user or not
if user is not None:
login(request, user)
return redirect('home')
else:
messages.error(request, 'Incorrect Username or password')
context={'page':page}
return render(request, 'base/login_register.html', context)
def logoutUser(request):
logout(request)
return redirect('home')
def registerPage(request):
page = 'register'
form = MyUserCreationForm()
if request.method == 'POST':
form = MyUserCreationForm(request.POST)
if form.is_valid():
#commit is to get the instance from form but only 'in memory', not in db
# Before save it you want to make some changes
user = form.save(commit=False)
user.username = user.username.lower()
user.save() #save the user
login(request,user)
return redirect('home')
else:
messages.error(request,'An error occured during registration')
context = {'form':form,'page':page}
return render(request, 'base/login_register.html', context)
MySQL connection:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'studymate',
'HOST': 'localhost',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '1234',
}
}