I have used User Creation Form for user registration.
class UserSignUpView(SuccessMessageMixin, FormView):
form_class = UserCreationForm
success_url = reverse_lazy('login')
template_name = 'core/signup.html'
success_message = 'Account created successfully.'
When user is already logged in it should not see the signup form
You can achive those things using
dispatch()method of class based view