簡體   English   中英

如何將鏈接中的變量傳遞給django視圖

[英]how to Pass variable in link to the django view

我有一個html表單,使用for循環顯示數據。

<tbody id="table">
    {% for sku, lid, stk, mrp, sp, stts in product_data %}
    <tr>
        <td>
            <a class="btn-link" href="/product/product.html" value="{{sku}}">{{sku}}</a>
        </td>
        <td>{{lid}}</td>
        .....

此代碼使用for循環在表中打印數據,在表的第一個colyumn中有鏈接。
該鏈接指向一個新頁面,我希望顯示一些數據。
現在顯示的數據是從mongodb數據庫動態生成的。 我想當我點擊鏈接時它將值作為參數傳遞給django視圖,因此可以獲取包含參數的數據並在下一頁顯示它。 怎么做?

我的views.py:

from django.shortcuts import render
from django.http import HttpResponse
from inventory.models import GetProductData

def inventory(request):
    pd = GetProductData().skuData()
    sku = pd[0]
    listing_id = pd[1]
    stock_count = pd[2]
    mrp = pd[3]
    status = pd[5]
    selling_price = pd[4]

    product_data = zip(sku, listing_id, stock_count, mrp, selling_price, status)
    context_dict = {'product_data':product_data}
    return render(request, 'inventory/inventory.html', context_dict)

def product(request):
    return render(request, 'inventory/product.html')

首先,添加網址時不建議使用html名稱。 而不是擁有

href="/product/product.html"

你可能有類似的東西

href="/product/"

所以在你的urls.py中你應該定義如下

url(r'^product/$', product),

其中'product'是處理該請求的相應視圖。

現在,如果你想從html向django發送一些參數

渲染模板如下

<tbody id="table">
    {% for sku, lid, stk, mrp, sp, stts in product_data %}
    <tr>
        <td>
            <a class="btn-link" href="/product/?sku={{ sku }}">{{sku}}</a>
        </td>
        <td>{{lid}}</td>
        .....

在你看來,即; 在產品上

def product(request):
    if request.method=='GET':
        sku = request.GET.get('sku')
        if not sku:
            return render(request, 'inventory/product.html')
        else:
            # now you have the value of sku
            # so you can continue with the rest
            return render(request, 'some_other.html')

它可以通過兩種方式完成,使用get和using URL參數。

使用get簡單而靈活,但會導致丑陋的URL:

            <a class="btn-link" href="/product/product.html?parameter={{ your_parameter_here }}" value="{{sku}}">{{sku}}</a>

在內部視圖中,您可以像這樣訪問它:

def product(request):
    your_parameter = request.GET['parameter']
    return render(request, 'inventory/product.html')

使用url參數是更好的方法,它也比獲取參數更干燥(特別是當不使用帶有get的{% url %}標記時)。

你的urls.py應該是這樣的:

urlpatterns = [
    url(r'^product/product-(?P<parameter>[\w-]+).html', 'views.product', name="product"),
]

在視圖中獲取該參數:

def product(request, parameter): # it's just passed as kwarg into view
    return render(request, 'inventory/product.html')

並在模板中創建URL:

            <a class="btn-link" href="{% url "product" parameter=your_parameter_here %}" value="{{sku}}">{{sku}}</a>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM