[英]Django - How to pass multiple parameters to URL
我創建了一個列表頁面,可以在其中搜索所有列表。 從那里,用戶可以單擊任何特定列表以查看更多詳細信息。 當我 go 到個人列表頁面時,我顯示面包屑以提供一個選項 go 返回搜索結果(這是以前的列表頁面)。
問題是我無法在從列表頁面調用單個列表頁面時傳遞 2 個參數(一個包含之前的 URL,以便我可以將其用於 Breadcrumb 返回搜索結果)。 請看主要代碼:
視圖.py
def listing(request, listing_id, query):
listing = get_object_or_404(Listing, pk=listing_id)
context = {
'listing': listing,
'query':query
}
return render(request, 'listings/listing.html', context)
HTML模板
{% url 'listing' listing_id=listing.id path=12 %}
我嘗試使用{{ request.get_full_path }}
查找路徑然后添加到參數但它不起作用。 任何有關如何捕獲 URL 的建議將不勝感激。
在你的urls.py
中試試這個:
urlpatterns = [
path('listing/<int:pk>/<int:path>/', views.listing, name='listing')
]
您可以使用:
{% url 'listing' listing_id=listing.id path=request.get_full_path %}
但隨后路徑將不得不接受這一點。 所以它看起來像:
path('foo/<int:listing_id>/<path:path>/', …)
它看起來也很混亂,特別是因為它會百分比轉義各種問號和 & 號。
可能一個稍微干凈的解決方案是在查詢字符串中對此進行編碼,所以它看起來像:
path('foo/<int:listing_id>/', …)
視圖看起來像:
def listing(request, listing_id):
listing = get_object_or_404(Listing, pk=listing_id)
context = {
'listing': listing,
'query': request.GET.get('query')
}
return render(request, 'listings/listing.html', context)
我們將鏈接呈現到列表中:
{% url 'listing' listing_id=listing.id %}?query={{ request.get_full_path|urlencode }}
但是在 URL 中對整個路徑進行編碼看起來並不是很愉快。 如果你有一個搜索頁面,你也許可以簡單地對搜索查詢本身進行編碼(所以不是路徑,而是人們在搜索欄中寫的內容)。 這使得 URL 更短,視覺上更令人愉悅。
request.GET.getlist("get_full_path []", [])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.