Python Django:如何根据调用的请求方法更改上下文字典
我正在将Python Django:如何根据调用的请求方法更改上下文字典,python,django,Python,Django,我正在将fx\u rates视图中的生成器对象results传递到模板,如下所示: def fx_rates(request): if request.method != 'POST': form = FxForm() results=[] else: form = FxForm(request.POST) if form.is_valid(): scraper = FxScraper()
fx\u rates
视图中的生成器对象results
传递到模板,如下所示:
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>
{结果中的结果为%}
- {{result}}
{%endfor%}
(下面描述的问题解决后,我可以将其更改为{{next(results)}}
)
问题是,我不知道如何防止在使用GET方法调用视图时显示“[]”(请参阅上面的if子句)
我无法删除results=[]
行,因为使用get调用视图时会出现错误
当方法为GET时,我可能需要以某种方式从
上下文
字典中删除结果?当方法为GET时,请尝试:
results = ""
这样,结果的值为空 你可以这样做
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)
<div style="display:{{show_div}}">
<ul>
{% for result in results %}
<li>{{result}}</li>
{% endfor %}
</ul>
</div>
您的html将如下所示
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)
<div style="display:{{show_div}}">
<ul>
{% for result in results %}
<li>{{result}}</li>
{% endfor %}
</ul>
</div>
{结果中的结果为%}
- {{result}}
{%endfor%}
或者干脆检查一下
{% if result %}
<ul>
{% for result in results %}
<li>{{result}}</li>
{% endfor %}
</ul>
{% else %}
{% endif %}
{%if结果%}
{结果中的结果为%}
- {{result}}
{%endfor%}
{%else%}
{%endif%}
我无法使用此选项,因为这样,模板中的for循环将无法工作(Django将抛出错误)