【问题标题】:Django: grabbing parametersDjango:抓取参数
【发布时间】:2011-01-08 15:56:23
【问题描述】:

我最难做的事情应该是超级简单的。 django中传来的参数抓不到。

在浏览器中输入:

http://localhost:8000/mysite/getst/?term=hello

我的网址格式是:

(r'^mysite/getst/$', 'tube.views.getsearchterms')

我的观点是

def getsearchterms(request):

my_term = some_way_to_get_term

return HttpResponse(my_term)

在这种情况下,它应该返回“hello”。我正在调用视图,但返回给我一个空白值。我尝试过各种形式的 GET....

some_way_to_get_term 应该是什么?

【问题讨论】:

    标签: django parameters


    【解决方案1】:

    get 参数可以像任何字典一样被访问:

    my_term = request.GET['term']
    my_term = request.GET.get('term', 'my default term')
    

    【讨论】:

    • 好吧,那行得通:)我以为我试过了,但我想没有;)
    • 实际上,我得到一个错误,UnicodeDecodeError,带有一些参数,例如:localhost:8000/my_site/getst/?term=telet。你知道怎么解决吗?
    • 实际上,我现在看到问题不在于获取参数,而在于我如何处理它。我在 url 中使用它,然后执行 data = urllib2.urlopen(url) 和 j = json.load(data)。所以问题可能出在退回的东西上。所以,它与这个问题无关。如果需要,我会调查并发布另一个问题。
    【解决方案2】:

    在 ? 之后使用任意参数然后用 request.GET['term'] 捕获它们,你错过了 Django urls 模块的最佳特性:一致的 URL 方案

    如果此 URL 调用中始终存在“术语”,则它必须对您的应用程序有意义, 所以你的 url 规则可能看起来像:

    (r'^mysite/getst/(?P<term>[a-z-.]+)/', 'tube.views.getsearchterms')
    

    这意味着:

    1. 您有一个更加 SEO 友好且稳定的 URL 方案(内部没有 ?term=this&q=that)
    2. 您可以在自己的观点中轻松抓住论点:

    像这样

    def getsearchterms(request,term):
        #do wahtever you want with var term
        print term
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多