Как преобразовать представление на основе функции в представление на основе класса Generic для двух моделей

я создаю представление регистра как основанное на функциях, но я хочу использовать общий класс, чтобы лучше улучшить мой код.

это моя models.py

from django.db import models
from django.contrib.auth.models import User


class UserRegister(models.Model):
    reg_user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name='user')
    mobile = models.CharField(max_length=255, verbose_name='mobile phone number : ', unique=True)
    name = models.CharField(max_length=255, verbose_name='First Name : ')
    family = models.CharField(max_length=255, verbose_name='Last Name : ')

    def __str__(self):
        return f"{self.mobile} as {self.name}"

then my forms.py

from django import forms
from django.contrib.auth.forms import UserCreationForm
from .models import *


class RegisterForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['username', 'first_name', 'email', 'password1', 'password2']


class UserForm(forms.ModelForm):
    class Meta:
        model = UserRegister
        fields = '__all__'

затем я вызвал их обоих в views.py следующим образом

from django.shortcuts import render, redirect
from django.views.generic import *
from .forms import *


def register(request):
    r_form = RegisterForm()
    u_form = UserForm()
    if request.method == 'POST':
        r_form = RegisterForm(request.POST)
        u_form = UserForm(request.POST)
        if r_form.is_valid() and u_form.is_valid():
            user = r_form.save()
            u_form = u_form.save(commit=False)
            u_form.user = user
            u_form.save()
            return redirect('main')
        else:
            r_form = RegisterForm(request.POST)
            u_form = UserForm(request.POST)

    context = {
        'r_form': r_form,
        'u_form': u_form
    }
    return render(request, 'template.html', context)


пример общего класса на основе, который я знаю, хранится только в 1 модели, как

class CreateUserView(CreateView):
    model = User
    form_class = UserForm
    template_name = 'template.html'
    
    def get_success_url(self):
        return redirect('main')

кто-нибудь может помочь мне улучшить мой код, пожалуйста?

Вернуться на верх