代码之家  ›  专栏  ›  技术社区  ›  barciewicz

Django:如何根据调用的请求方法更改上下文字典

  •  0
  • barciewicz  · 技术社区  · 6 年前

    results fx_rates 按如下方式查看模板:

    def fx_rates(request):
        if request.method != 'POST':
            form = FxForm()
            results=[]
        else:
            form = FxForm(request.POST)
            if form.is_valid():
                scraper = FxScraper()
                scraper.from_currencies.append(form.cleaned_data['from_currencies'])
                scraper.dates = form.cleaned_data['dates'].split(" ")
                scraper.to_currency = form.cleaned_data['to_currency']
                results = scraper.results()
    
        context = {'form':form, 'results':results}
        return render(request, 'map_assistant/fx_rates.html',context)
    

    在该视图的模板中,我使用以下内容显示结果:

    <ul>     
      {% for result in results %}
        <li>{{result}}</li>
      {% endfor %}        
    </ul>
    

    (我想我可以改成 {{next(results)}} 一旦解决了以下问题)。

    问题是,当使用GET方法调用视图时,我不知道如何防止“[]”显示(参见上面的if子句)。

    我不能删除 results=[] 因为当使用get调用视图时,我将得到一个错误。

    我想我需要从 context

    2 回复  |  直到 6 年前
        1
  •  0
  •   t0bi    6 年前

    当方法为GET时,请尝试:

    results = ""
    

        2
  •  0
  •   Ojas Kale    6 年前

    你可以这样做

    def fx_rates(request):
        show_div = 'none'
        if request.method != 'POST':
            form = FxForm()
            results=[]
        else:
            show_div = 'block'
            form = FxForm(request.POST)
            if form.is_valid():
                scraper = FxScraper()
                scraper.from_currencies.append(form.cleaned_data['from_currencies'])
                scraper.dates = form.cleaned_data['dates'].split(" ")
                scraper.to_currency = form.cleaned_data['to_currency']
                results = scraper.results()
    
        context = {'form':form, 'results':results, 'show_div':show_div}
        return render(request, 'map_assistant/fx_rates.html',context)
    

    你的html看起来像这样

    <div style="display:{{show_div}}">
       <ul>     
      {% for result in results %}
        <li>{{result}}</li>
      {% endfor %}        
    </ul>
    </div>
    

    或者干脆查一下

     {% if result %}
        <ul>     
            {% for result in results %}
        <li>{{result}}</li>
            {% endfor %}        
        </ul>
    {% else %}
    
    {% endif %}