[英]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.