ฉันพยายามหาคำตอบมานานจนพบวิธีแก้ปัญหานี้
ใน models.py do: จากโมเดลการนำเข้า django.db
class YourLoginModel:
      fullname = models.CharField(max_length=255, default='your_name', unique=True)
      email  = models.EmailField(max_length=255, unique=True)
      username = models.CharField(max_length=255, unique=True)
      password = models.CharField(max_length=255) 
                                                  
ใน form.py ทำ:
from django import forms
from .models import YourLoginModel
class LoginForm(forms.ModelForm):
      class Meta:
            model = YourLoginModel
            fields = ('username', 'password')
ในตรรกะการเข้าสู่ระบบ views.py:
def login(request):
    
     
    form = LoginForm()
    if request.method == 'POST':
        try:
            
            user_logging_in = User.objects.get(username=request.POST['username'])
            
            hash = user_logging_in.password
            
            password = request.POST['password']
        
        except ObjectDoesNotExist:
            html_response = 'User does not exists'
            return HttpResponse(html_response)
        
        if check_password_hash(hash, password):
 
            
            request.session['username'] = request.POST['username']
            
            request.session.set_expiry(0) 
            return redirect('yourapp:home')
        else:
            return HttpResponse('password was incorrect')
    html = 'Login'
    return render(request, 'login.html', {'form': form})
ในมุมมองแอปคุณต้องการดำเนินการ login_required ใน do
from django.views.generic import TemplateView
class yourTemplateView(TemplateView):
      template_name = 'your_template.html'
      def dispatch(self, request, *args, **kwrags):
           if not request.session.has_key('username'):
              
              return redirect('yourapp:login.html')
           else:
              return render(request, 'your_view.html')