【问题标题】:Django optional parameter is not readed from url未从 url 读取 Django 可选参数
【发布时间】: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

我做错了吗?

【问题讨论】:

    标签: python django


    【解决方案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
      

      【讨论】:

      猜你喜欢
      • 2018-06-27
      • 2012-12-30
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      相关资源
      最近更新 更多