Python 向Django URL传递参数失败

Python 向Django URL传递参数失败,python,django,url,django-views,django-templates,Python,Django,Url,Django Views,Django Templates,我试图对项目中缺失的页面进行虚拟调用,以便跟踪缺失的内容。一个简单的“正在构建”页面,其中包含丢失链接的名称。我没有把真正的链接放在调用的html中,而是放在vacia.html中: <li><a href="{% url 'incid:xtodo' pagref='aquisalto' %}"> PuntoDeSalto </a></li> 这是xtodo视图: def xtodo_view(request): # par

我试图对项目中缺失的页面进行虚拟调用,以便跟踪缺失的内容。一个简单的“正在构建”页面,其中包含丢失链接的名称。我没有把真正的链接放在调用的html中,而是放在vacia.html中:

<li><a href="{% url 'incid:xtodo' pagref='aquisalto' %}"> PuntoDeSalto </a></li>
这是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})
我找不到一种方式让它工作,它应该是如此简单。我正在使用Django3和Python3。 我尝试过其他通话方式,如:

href="{% url 'incid:xtodo'?pagref='aquisalto' %}"  
or
href="{% url 'incid:xtodo'%}?pagref='aquisalto'"
有没有?有无“或”

显然,我没有理解其中的一些重要内容。我无法将如此简单的事情付诸实施,而必须在其中显示pagref的值。我在当前编码中遇到的错误是: /incid/xtodo处的类型错误/

xtodo_view()得到一个意外的关键字参数“pagref”


我将感谢您的帮助。

您传递参数的方式不正确

您可以使用以下两种方法进行操作:

1.使用
路径
参数

views.py

在url中调用此视图

在第一种情况下,在您的视图中,您将获得作为
'g'
我的参数
,在第二种情况下,您将获得作为
'p'
的我的参数


2.使用
查询
参数

当您从url传递查询参数时,如
www.abc.xyz?q1=val1&q2=val2
。 您可以使用
request.get.get(q1)
request.get.get(q2)
获取这些查询参数
q1
q2

views.py

在url中调用此视图


在第一种情况下,使用request.GET.GET('pageref','p')
将给出
'abc'
,在第二种情况下,它将给出
'xyz'

传递参数的方式不正确

您可以使用以下两种方法进行操作:

1.使用
路径
参数

views.py

在url中调用此视图

在第一种情况下,在您的视图中,您将获得作为
'g'
我的参数
,在第二种情况下,您将获得作为
'p'
的我的参数


2.使用
查询
参数

当您从url传递查询参数时,如
www.abc.xyz?q1=val1&q2=val2
。 您可以使用
request.get.get(q1)
request.get.get(q2)
获取这些查询参数
q1
q2

views.py

在url中调用此视图


在第一种情况下,使用request.GET.GET('pageref','p')
将给出
'abc'
,在第二种情况下,它将给出
'xyz'

非常感谢,方法二在第一次尝试时就成功了。我的错误是将参数保留在单引号之间,而没有在视图中初始化pagref值。我尝试了太多组合,所以忽略了它。我对于何时使用哪个引号或在何处使用,我仍然不太清楚。@carolvs,如果这有帮助,你可以将这个答案标记为选中。成功了。这非常有帮助。谢谢。非常感谢,方法二在第一次尝试时就成功了。我的错误是将参数保留在单引号之间,而没有在视图中初始化pagref值。我已经尝试了很多组合不知道我漏掉了什么。我仍然不清楚什么时候使用哪句话或在哪里使用。@carolvs,如果这有帮助,你可以将这个答案标记为选中。成功了。这非常有帮助。谢谢。
href="{% url 'incid:xtodo'?pagref='aquisalto' %}"  
or
href="{% url 'incid:xtodo'%}?pagref='aquisalto'"
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})
href="{% url 'incid:xtodo' 'g' %}"
href="{% url 'incid:xtodo' 'p' %}"
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})
href="{% url 'incid:xtodo'}?pagref=abc"  
href="{% url 'incid:xtodo'%}?pagref=xyz"