[英]Passing parameters to a Django URL fails
我正在嘗試對項目中丟失的頁面進行虛擬調用,以便跟蹤丟失的內容。 帶有缺失鏈接名稱的簡單“正在建設”頁面。 我沒有把真正的鏈接放在調用 html, vacia.html 中:
<li><a href="{% url 'incid:xtodo' pagref='aquisalto' %}"> PuntoDeSalto </a></li>
url 在 url 中以這種方式解碼:
href="{% url 'incid:xtodo' pagref=aquisalto %}
"
它應該 go 使用參數“aquisalto”來 incid/xtodo 這是 xtodo 代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>En construcción</title>
</head>
<h1 align="left">EN CONSTRUCCIÓN</h1>
<h1>
<h1>{{pagref}}</h1>
<div>
<img src="http://{{ request.META.HTTP_HOST }}/static/logos/Under_construction_icon-orange.svg.png" width="300"
height="250" alt="UnderConstruction"/>
</div>
</body>
</html>
這是 xtodo 視圖:
def xtodo_view(request): # para pruebas, quitar
global pagref
if request.method == 'GET':
pagref = request.GET.get('pagref', 'g')
elif request.method == 'POST':
pagref = request.POST.get('pagref', 'p')
return render(request, 'incid/xtodo.html', {'pagref': pagref})
我沒有找到一種方法讓它工作,它應該很簡單。 我正在使用 DJANGO 3 和 Python 3。我嘗試過其他調用 forms ,例如:
href="{% url 'incid:xtodo'?pagref='aquisalto' %}"
or
href="{% url 'incid:xtodo'%}?pagref='aquisalto'"
有和沒有? 有和沒有'或'。
當然,我錯過了理解其中重要的事情。 我不能把這么簡單的事情放在工作中,讓 todo 顯示其中的 pagref 的值。 我在當前編碼中遇到的錯誤是:TypeError at /incid/xtodo/
xtodo_view() 得到了一個意外的關鍵字參數 'pagref'
我將不勝感激。
您傳遞參數的方式不正確。
您可以使用以下兩種方式進行操作:
1.使用
path
參數
視圖.py
def xtodo_view(request, my_param): # para pruebas, quitar
# here my_param will have anything you pass
return render(request, 'incid/xtodo.html', {'pagref': my_param})
在 url 中調用此視圖
href="{% url 'incid:xtodo' 'g' %}"
href="{% url 'incid:xtodo' 'p' %}"
在您認為的第一種情況下,您將獲得my_param
作為'g'
,在第二種情況下,您將獲得 my_param 作為'p'
。
2.使用
query
參數
當您從 url 傳遞查詢參數時,例如www.abc.xyz?q1=val1&q2=val2
。 您可以使用request.GET.get(q1)
和request.GET.get(q2)
獲取這些查詢參數q1
和q2
。
視圖.py
def xtodo_view(request): # para pruebas, quitar
pageref = ""
if request.method == 'GET':
pagref = request.GET.get('pagref', 'g')
elif request.method == 'POST':
pagref = request.GET.get('pagref', 'p')
return render(request, 'incid/xtodo.html', {'pagref': pagref})
在 url 中調用此視圖
href="{% url 'incid:xtodo'}?pagref=abc"
href="{% url 'incid:xtodo'%}?pagref=xyz"
在第一種情況下,使用request.GET.get('pageref', 'p')
會給出'abc'
,在第二種情況下會給出'xyz'
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.