如何解决提交表单后对于不同的视图如何获得相同的值?
嗨,我正在尝试通过下拉列表创建列表,并在2个不同的视图中使用该列表。
第一个视图是您在其中创建列表的主视图。第二个视图是从新创建的列表中创建一个Excel工作表。
这是我要从中创建列表的形式:
<form method="POST">
{% csrf_token %}
<div class="optionstoselectproduct" >
<select name="neworbestselling">
<option value="New">New</option>
<option value="Best Selling">Best Selling</option>
</select>
<select name="organisebaseon_rank">
<option value="Natural">Natural</option>
<option value="Highest Reviews">Highest Reviews</option>
<option value="Lowest Reviews">Lowest Reviews</option>
<option value="Highest Price">Highest Price</option>
<option value="Lowest Price">Lowest Price</option>
</select>
<select name="Number of Rows">
{% for i in rows %}
<option value="{{i | add:1}}">{{i | add:"1"}}</option>
{% endfor %}
</select>
<button type="submit">Submit</button>
</div>
</form>
这是我在view.py中使用的代码:
变量:
newwalmart = models.Walmart_product.objects.filter(new_or_best="new").all()
bestwalmart = models.Walmart_product.objects.filter(new_or_best="best selling").all()
rows_ofall_newwalmart = len(newwalmart)
rows_ofall_bestwalmart = len(bestwalmart)
功能:
def organiser(newbest='new',rank='Natural',rows="25"):
# for new
numofrows = int(rows)
if newbest == "New" and rank == 'Natural':
return [newwalmart[:numofrows],rows_ofall_newwalmart]
elif newbest == "New" and rank == 'Highest Reviews':
return [newwalmart.order_by('-reviews')[:numofrows],rows_ofall_newwalmart]
elif newbest == "New" and rank == 'Lowest Reviews':
return [newwalmart.order_by('reviews')[:numofrows],rows_ofall_newwalmart]
elif newbest == "New" and rank == 'Lowest Price':
return [newwalmart.order_by('price')[:numofrows],rows_ofall_newwalmart]
elif newbest == "New" and rank == 'Highest Price':
return [newwalmart.order_by('-price')[:numofrows],rows_ofall_newwalmart]
# for best
elif newbest == "Best Selling" and rank == 'Highest Reviews':
return [bestwalmart.order_by('-reviews')[:numofrows],rows_ofall_bestwalmart]
elif newbest == "Best Selling" and rank == 'Lowest Reviews':
return [bestwalmart.order_by('reviews')[:numofrows],rows_ofall_bestwalmart]
elif newbest == "Best Selling" and rank == 'Lowest Price':
return [bestwalmart.order_by('price')[:numofrows],rows_ofall_bestwalmart]
elif newbest == "Best Selling" and rank == 'Highest Price':
return [bestwalmart.order_by('-price')[:numofrows],rows_ofall_bestwalmart]
else:
return [bestwalmart[:numofrows],rows_ofall_bestwalmart]
视图1:
def home(request):
users_fav_products = models.Chosen_product.objects.filter(user=request.user.id).all()
print(f'this is the list of products {users_fav_products}')
if request.method == "POST":
neworbestselling = request.POST.get('neworbestselling')
rank = request.POST.get('organisebaseon_rank')
rows = request.POST.get('Number of Rows')
products_dict = {
'products': organiser(neworbestselling,rank,rows)[0],'rows': range(organiser(neworbestselling,rows)[1]),'users_fav_products': users_fav_products
}
return render(request,"home.html",products_dict)
else:
products_dict = {
'products': organiser()[0],'rows': range(organiser()[1]),'users_fav_products': users_fav_products
}
return render(request,products_dict)
视图2:
def create_excel_from_table(request):
if request.method == "POST":
neworbestselling = request.POST.get('neworbestselling')
rank = request.POST.get('organisebaseon_rank')
rows = request.POST.get('Number of Rows')
products_from_table = organiser(neworbestselling,rows)[0]
else:
products_from_table = organiser()[0]
return excel_generator(products_from_table)
问题在于,提交表单后,主视图可以列出该列表,但是提交表单后create_excel_from_table视图无法创建相同的列表。它只会得到默认值。
如何使create_excel_from_table视图获得相同的列表?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。