django передать данные с помощью тега привязки - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь передать данные с помощью тега привязки в django представления. Мой html файл:

    <div class="card-body dropdown">
      <button class="dropbtn">Pay</button>
      <div class="dropdown-content">
        <a href="{% url 'payments' data='wallet'%}">Payments Wallet</a>
        <a href="{% url 'payments' data='credit_card'%}">Payments Credit card</a>
        <a href="{% url 'payments' data='debitcard'%}">Payments Debitcard</a>
        <a href="{% url 'payments' data='bitcoin'%}">Payments Bitcoin</a>
      </div>
    </div>    
  </div>

Мой файл urls.py

urlpatterns = [

    path('payments/<str:data>',views.payments,name="payments"),
] + static(settings.MEDIA_URL,document_root =  settings.MEDIA_ROOT)

мой файл views.py

def payments(request):
    query = request.GET.get('data')
    print(query)
    return render(request, '403.html')

Ошибка: отмена для 'платежей' без аргументов не нашел. Испытано 1 шаблон (ы): ['customerspayments \ / (? P [^ /] +) $']

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 07 мая 2020

Поскольку вы передаете параметр URL-адресу, вам также необходимо добавить этот аргумент в функцию. Итак, либо измените только свой views.py, просто добавив параметр внутри функции

1. Лучший способ

# Edit

# Pass parameter like this, if it works or not, for all 4 anchors
<a href="{% url 'payments' wallet %}">Payments Wallet</a>


# Add data to the side of reqeust
def payments(request, data):
    # If you getting query like this, then you don't have to pass parameter to url
    # query = request.GET.get('data')
    query = data

    print(query)
    return render(request, '403.html')

Или, если вы хотите получить параметр из метода get, измените URL-адрес. Итак, эфир, который вы берете из метода get, например:

2. Другой способ

# urls.py

urlpatterns = [
    # removed data
    path('payments',views.payments,name="payments"),
] + static(settings.MEDIA_URL,document_root =  settings.MEDIA_ROOT)


# Your template where, your anchor is
<div class="card-body dropdown">
      <button class="dropbtn">Pay</button>
      <div class="dropdown-content">
        <a href="{% url 'payments' %}?data=wallet">Payments Wallet</a>
        <a href="{% url 'payments' %}?data=credit_card">Payments Credit card</a>
        <a href="{% url 'payments' %}?data=debitcard">Payments Debitcard</a>
        <a href="{% url 'payments' %}?data=bitcoin">Payments Bitcoin</a>
      </div>
    </div>    
  </div>


# views.py
# your views.py
def payments(request):
    query = request.GET.get('data')
    print(query)
    return render(request, '403.html')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...