Джанго - полоса подписки - PullRequest
0 голосов
/ 04 октября 2018

У меня есть представление, которое использует Stripe для начисления суммы, а затем перенаправляет пользователя на страницу подписки, но как я могу предотвратить прямой доступ пользователя к URL-адресу?

Вид начисления:

def testview(request):

    charge = stripe.Charge.create(
        amount=2000,
        currency="usd",
        source="tok_visa", # obtained with Stripe.js
        description="Charge for jenny.rosen@example.com"
    )

    return render(request, 'test.html')

Просмотр создания моей подписки:

def create_sub(request):
     plan1 = "plan_DiiAhydC7AxqeG"
     plan2 = "plan_DiiAypModfV7VJ"

     plan = request.GET.get('plan')

    if plan == '1':
        active_plan = plan1
    elif plan == '2':
        active_plan = plan2

    sub = stripe.Subscription.create(
        customer=request.user.stripe_id,
        items=[
            {
                "plan": active_plan,
            },
        ]
   )

Мой шаблон оплаты html:

<form action="/test/create-sub?plan=2" method="POST">
{% csrf_token %}
 <script
    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="stripe_api_code"
    data-amount="100000"
    data-name="Bilpard"
    data-description="Paid plan"
    data-image="https://stripe.com/img/documentation/checkout/marketplace.png"
    data-locale="auto">
 </script>
</form>

1 Ответ

0 голосов
/ 04 октября 2018

Как насчет упаковки представления testview внутри декоратора require_post ?

from django.views.decorators.http import require_POST

@require_POST()
def testview(request):

    charge = stripe.Charge.create(
        amount=2000,
        currency="usd",
        source="tok_visa", # obtained with Stripe.js
        description="Charge for jenny.rosen@example.com"
    )

    return render(request, 'test.html')

При этом только POST-запросы разрешают доступ к этому представлению.

...