Как я могу предотвратить прямой доступ к конечной точке, только перенаправление может получить доступ, а не пользователь?

Я создаю сайт, на котором после регистрации происходит перенаправление на OTP endpoint. Я не хочу, чтобы этот URL был доступен пользователю напрямую. Я хочу, чтобы он был доступен только тогда, когда функция, например, signup, перенаправляет к этой конечной точке. Как я могу это сделать? Вот мой код

Forms.py

class OTP_Form(forms.ModelForm):
    class Meta:
        model = OTP
        fields = ("otp", )
    otp = forms.CharField(label="Enter your OTP", required=True,
                          widget=forms.PasswordInput(attrs={'placeholder': 'e.g. 123456'}))

Вот вид для ОТП

def phone_verification(request):
    try:
        if request.method == "POST":
            otp = request.session.get('otp')
            username = request.session.get('username')
            first_name = request.session.get('first_name')
            last_name = request.session.get('last_name')
            email = request.session.get('email')
            password = request.session.get('password')
            phone = request.session.get('phone')
            age = request.session.get('age')
            otp_form = OTP_Form(request.POST)
            if otp_form.is_valid():
                get_otp = otp_form.cleaned_data['otp']
                if get_otp == otp:
                    user = User.objects.create_user(username=username, email=email, password=password,
                                                    first_name=first_name, last_name=last_name, last_login=str(datetime.now(pytz.timezone('Asia/Karachi'))))
                    customer = Customer.objects.create(
                        user=user, phone=phone, age=age)
                    user.save()
                    customer.save()
                    otp_entry = OTP.objects.create(phone=phone, otp=otp)
                    otp_entry.save()
                    messages.success(request, 'Your account has been creaated')
                    return redirect('login')
                else:
                    messages.error(request, 'Incorrect OTP')
                    return redirect('otp')
            else:
                messages.error(request, 'Please enter the OTP again')
                return redirect('otp')
        else:
            otp_form = OTP_Form()
            return render(request, 'otp.html', {'otp_form': otp_form})
    except:
        return ValidationError("An error occured while verifyig otp")


Вашим аутентифицированным пользователям не нужно это представление, поэтому напишите это в представлении:

def phone_verification(request):
     if request.user.is_authenticated:
         redirect('home')
     else:
         #your staffs
         ...
Вернуться на верх