我正在阅读帖子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
我做错了吗?
答案 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