簡體   English   中英

將參數傳遞給 Django URL 失敗

[英]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)獲取這些查詢參數q1q2

視圖.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.

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