未从 url 读取 Django 可选参数
Posted
技术标签:
【中文标题】未从 url 读取 Django 可选参数【英文标题】:Django optional parameter is not readed from url 【发布时间】:2018-03-05 01:41:47 【问题描述】:我正在阅读线程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
我做错了吗?
【问题讨论】:
【参考方案1】:你的网址是
/client/John/
而不是
/client/?clientname=John
即使在以下示例中使用 John 也会失败,因为您的正则表达式用于数字,请查看更多关于 django dispatcher 的主题
/client/4/
如果您想获取 GET 参数,则可以使用以下方法在视图中执行此操作
request.GET.get('clientanme', None)
【讨论】:
【参考方案2】:您似乎对关键字参数和获取请求感到困惑。使用为 urls.py
配置的关键字参数,您的视图将如下所示:
def index(request, **kwargs):
clientname = kwargs.get("clientname", "noparameter")
print("The searched name is: " + str(clientname))
您的 urls.py 还必须更改为 this 的 url:
url(r'^client/(?P<clientname>\w+)/',views.index),
这可以在浏览器中调用,如:
/client/John
【讨论】:
你说得对!读完标题***.com/questions/3500859/django-request-get#3500932我更清楚你写给我的内容。谢谢!以上是关于未从 url 读取 Django 可选参数的主要内容,如果未能解决你的问题,请参考以下文章