【问题标题】:django pass data using anchor tagdjango 使用锚标签传递数据
【发布时间】:2020-05-07 13:05:54
【问题描述】:

我正在尝试使用锚标记将数据传递给 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[^/]+)$']

请帮忙。

【问题讨论】:

    标签: django


    【解决方案1】:

    因为您将参数传递给 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')
    

    【讨论】:

    • 妈妈还是不行,看来我的网址格式不对。
    • 我已经为第一个编辑了代码。检查那个是否有效。如果不使用完整的回溯编辑您的问题!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 2017-04-08
    相关资源
    最近更新 更多