【问题标题】:Django why request.method=='GET' when refreshing the pageDjango刷新页面时为什么request.method=='GET'
【发布时间】:2018-03-09 00:45:26
【问题描述】:

我想在我的页面上有一些搜索框,我的相关代码如下所示,我的问题是为什么当我刷新页面时 if 子句:“if request.method=='GET':”在没有我点击的情况下执行在任何按钮上?

def allstocks_view(request):
 if request.method=='GET':
     question_set =Stocks.objects.all().filter(confirm=_('approved') )
     name=request.GET.get('namesearch')
     number=request.GET.get('numbersearch')
     brand=request.GET.get('brandsearch')

     if name is not None :
          question_set = question_set.filter(name__icontains = name)
     if number is not None :
          question_set = question_set.filter(number__icontains = number)
     if request.GET.get("brandsearch"):
          question_set = question_set.filter(brand__icontains = brand)
     print(">>>>>>>>>>>>>>>>>>>>")
     print(question_set)

模板:

<form  method="get">
{% csrf_token %}
<div class="">
<label for="namesearch">Name</label>
<input type="text" name="namesearch" >
<label for="numbersearch"> Number</label>
<input type="text" name="numbersearch" >
<label for="brandsearch"> Brand</label>
<input type="text" name="brandsearch" >
<label for="brandsearch"> City</label>
<input type="text" name="citysearch" >
<input type="submit" name="search" value="Search">
</div>
</form>

【问题讨论】:

  • 为什么不是 GET?你认为还会是什么?

标签: django get refresh


【解决方案1】:

页面的刷新是 GET 请求,除非您的最后一个操作是 POST 请求,因此每次都会执行。您可以做的是将表单设为帖子并在 request.method == 'POST' 块中处理。如果您想继续使用GET,另一种选择是让您的视图采用可选参数,例如search=None,并相应地设置您的网址。然后在您看来,您可以检查是否存在 search 而不是 request.method == 'GET'

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多