'Using Models and Views in Django

I need help with a project in Django. In views.py I have created a login to the site including registration, but I need to somehow use models.py to edit and add more user parameters, which I don't think is possible in views. Can someone please help me with this. I am attaching the code below.

views.py

from django.http import HttpResponse
from django.contrib.auth.models import User
from django.contrib import messages
from django.shortcuts import redirect, render
from django.contrib.auth import authenticate, login, logout
from rocnikovka import settings
from django.core.mail import EmailMessage, send_mail
from django.contrib.sites.shortcuts import get_current_site
from django.template.loader import render_to_string
from django.utils.http import urlsafe_base64_encode,urlsafe_base64_decode
from django.utils.encoding import force_bytes, force_str
from . tokens import generate_token



def home(request):
   return render(request, "authentication/home.html")

def signup(request):
   if request.method == "POST":
    # username = request.POST.get("username") 
    username = request.POST["username"]
    fname = request.POST["fname"]
    lname = request.POST["lname"]
    email = request.POST["email"]
    pass1 = request.POST["pass1"]
    pass2 = request.POST["pass2"]

    if User.objects.filter(username=username):
        messages.error(request, "Username already exist! Please try some other 
    username.")
        return redirect("home")

    if User.objects.filter(email=email).exists():
        messages.error(request, "Email Address already registered! ")
        return redirect("home")

    if len(username)>20:
        messages.error(request, "Username must be under 20 characters.")
        return redirect('home')

    if pass1 != pass2:
         messages.error(request, "Passwords did not match")
         return redirect('home') 

    if not username.isalnum():
        messages.error(request, "Username must be Alpha-numeric!")
        return redirect("home")

    myuser =  User.objects.create_user(username, email, pass1)
    myuser.first_name = fname
    myuser.last_name = lname
    myuser.is_active = False
    myuser.save()
    messages.success(request,"Your account has been succesfully created. We have sent 
    you a confirmation email, please confirm your email in order to activate your 
    account. ")

    # Welcome Email

    subject = "Welcome to our games sites"
    message="Hello " + myuser.first_name + "!! \n" + "Welcome to our games sites!! \n 
    Thank you for visiting our website \n we have also sent you a confirmation email, 
    please confirm your email address in order to activate your account, \n\n 
    Thanking you, \n Jiří Bezděkovský"
    from_email = settings.EMAIL_HOST_USER
    to_list = [myuser.email]
    send_mail(subject, message, from_email,to_list,fail_silently=True )

    # Email Address confirmation Email
    current_site = get_current_site(request)
    email_subject ="Confirm your email in games sites"
    message2 = render_to_string('email_confirmation.html',{
        
        'name': myuser.first_name,
        'domain': current_site.domain,
        'uid': urlsafe_base64_encode(force_bytes(myuser.pk)),
        'token': generate_token.make_token(myuser)
    })
    email = EmailMessage(
    email_subject,
    message2,
    settings.EMAIL_HOST_USER,
    [myuser.email],
    )
    email.fail_silently = True
    email.send()
    
    return redirect("signin")

return render(request, "authentication/signup.html")

 def activate(request, uidb64, token):
     try:
        uid=force_str(urlsafe_base64_decode(uidb64))
        myuser=User.objects.get(pk=uid)
     except (TypeError, ValueError, OverflowError, User.DoesNotExist):
        myuser=None

if myuser is not None and generate_token.check_token(myuser, token):
    myuser.is_active = True
    myuser.save()
    login(request, myuser)
    messages.success(request, "Your Account has been activated!!")
    return redirect("signin") 
else: 
    return render(request, "activation_failed.html")

 def signin(request):
    if request.method =="POST":
        username = request.POST["username"]
        pass1 =  request.POST["pass1"]

        user = authenticate(username=username, password=pass1)

      if user is not None:
        login(request, user)
        fname = user.first_name     
        return render(request, "authentication/index.html", {"fname": fname})
    else: 
        messages.error(request, "Bad Credentials!")
        return redirect("home")

    return render(request, "authentication/signin.html")

def signout(request):
    logout(request)
    messages.success(request, "Logged Out Successfully!")
    return redirect("home")
   # return render(request, "authentication/signout.html")


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source