Django可选参数不是从url中获取的

时间:2017-09-23 17:21:23

标签: python django

我正在阅读帖子Django optional url parameters 并按照生成带有单个可选参数的URL的步骤进行操作。

好吧,我的网址应该是:

/client/
/client/?clientname=John

我已经定义了两个urlpatterns

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 个答案:

答案 0 :(得分:2)

你正在使用的网址

/client/John/ 

而不是

/client/?clientname=John

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

  /client/4/ 

如果您想获得GET参数,可以使用以下

在视图中执行此操作
request.GET.get('clientanme', None)

答案 1 :(得分:1)

好像你在关键字参数和get请求之间感到困惑。使用为urls.py配置的关键字参数,您的视图会这样:

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

您的urls.py也必须更改为此网址:

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

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

/client/John