代码之家  ›  专栏  ›  技术社区  ›  Benjamin RD

Django可选参数未从url读取

  •  1
  • Benjamin RD  · 技术社区  · 7 年前

    Django optional url parameters

    /client/
    /client/?clientname=John
    

    我定义了两种URL模式

    url(r'^$', views.index, name='index'),
    url(r'^/(?P<clientname>\d+)/',views.index),
    

    好的,在这一点上,他们都呈现了页面。

    def index(request, clientname='noparameter'):
        print("The searched name is: " + str(clientname))
    

    搜索的名称始终为 noparameter

    我做错什么了吗?

    2 回复  |  直到 7 年前
        1
  •  3
  •   iklinac    7 年前

    你的Url是

    /client/John/ 
    

    而不是

    /client/?clientname=John
    

    此外,即使在下面的示例中使用John也会失败,因为您的正则表达式用于数字,请查看有关主题的更多信息 django dispatcher

      /client/4/ 
    

    如果您想取而代之的是获取参数,您可以在视图中使用以下命令

    request.GET.get('clientanme', None)
    
        2
  •  2
  •   Kyle Higginson    7 年前

    似乎您正在混淆关键字参数和get请求。使用关键字参数 urls.py 配置为,您的视图如下所示:

    def index(request, **kwargs):
        clientname = kwargs.get("clientname", "noparameter")
        print("The searched name is: " + str(clientname))
    

    url(r'^client/(?P<clientname>\w+)/',views.index),
    

    这可以在浏览器中调用,如:

    /client/John