Python django模板表单提交中的某些内容导致会话数据丢失
我有一个模板,用户在其中进行搜索,图形和数据进入页面。根据用户输入的查询值,我需要在会话中将其传递给另一个模板,但数据传输不起作用,因为在执行查询时查询被重置 以下是视图的外观:Python django模板表单提交中的某些内容导致会话数据丢失,python,django,django-templates,Python,Django,Django Templates,我有一个模板,用户在其中进行搜索,图形和数据进入页面。根据用户输入的查询值,我需要在会话中将其传递给另一个模板,但数据传输不起作用,因为在执行查询时查询被重置 以下是视图的外观: @method_decorator(login_required, name='dispatch') class SupplierPage2(LoginRequiredMixin,APIView): def get(self, request, *args, **kwargs): query =
@method_decorator(login_required, name='dispatch')
class SupplierPage2(LoginRequiredMixin,APIView):
def get(self, request, *args, **kwargs):
query = request.GET.get('search_ress', None)
print(query)
context = {}
#if query and request.method == 'GET':
Supplier = supplier2.objects.filter(supplier = query)
labels = Item2.objects.filter(fournisseur = query).values_list('reference', flat=True)[:10]
labels = list(labels)
default_items = Item2.objects.filter(fournisseur = query).values_list('number_of_sales', flat=True)[:10]
default_items = list(default_items)
label1s = Item2.objects.filter(fournisseur = query).values_list('reference', flat=True)[:10]
label1s = list(label1s)
default_item1s = Item2.objects.filter(fournisseur = query).values_list('number_of_orders_placed', flat=True)[:10]
default_items1s = list(default_item1s)
context.update({'Supplier' : Supplier, 'labels':labels, 'default_items':default_items,'label1s':label1s, 'default_item1s':default_item1s})
context2 = {'query':query}
print("context",context2)
request.session['query_dict'] = context2
return render(request, 'Supplier2.html',context)
下面是我在试图查询“BOLSEI”时在日志中得到的信息:
BOLSEI
context {'query': 'BOLSEI'}
start 2020-11-11 14:32:10.714716
start 2020-11-11 14:32:10.715460
None
context {'query': None}
start 2020-11-11 14:32:20.765804
start 2020-11-11 14:32:20.766572
supplier name {'query': None}
它在第一次工作时,因为查询包含一个值和所有值,但在呈现数据时,似乎有些内容得到了更新,查询值变成了None
。我的猜测是,一旦查询被传递,就会发生刷新,但我不理解是什么导致了它的发生,并且没有适当的错误被记录在任何地方。有线索吗
更新:由于我仍然无法确定问题来自何处,我开始深入研究我的模板代码,怀疑它可能来自我的ajax请求,导致了一个bug(尽管日志中没有显示任何内容)
以下是我所拥有的:
<script>
$(document).ready(function() {
var endpoint = 'Supplier2.html'
var default_items = []
var labels = []
var default_item1s = []
var label1s = []
;
$.ajax({
method: "GET",
url: endpoint,
success: function (data) {
labels = data.labels
default_items = data.default_items
label1s = data.label1s
default_item1s = data.default_item1s
setChart()
},
error: function (error_data) {
console.log(error_data)
}
}
)
function setChart(){
var ctx4 = document.getElementById('myChart4').getContext('2d');
var myChart4 = new Chart(ctx4, {
type: 'bar',
data: {
labels: label1s,
datasets: [{
label: document.getElementById('tag4').textContent == 'ITEMS WITH HIGHEST NUMBER OF REPLENISHMENTS (3 MONTHS)'? 'references with most replenishments':
'références avec nombre de réapprovisionnement élevé',
data: default_item1s,
backgroundColor: [
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
],
borderColor: [
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
'rgba(233,48,48)',
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
scaleLabel: {
display: true,
labelString: document.getElementById('tag4').textContent == 'ITEMS WITH HIGHEST NUMBER OF REPLENISHMENTS (3 MONTHS)'? 'number of replenishment' : 'nombre de reapprovisionnement'
},
gridLines: {
drawOnChartArea: false,
ticks: {
beginAtZero: true
}
}
}],
}
}
})
}
}
)
</script>
$(文档).ready(函数(){
var endpoint='Supplier2.html'
var default_items=[]
变量标签=[]
var default_item1s=[]
变量label1s=[]
;
$.ajax({
方法:“获取”,
url:endpoint,
成功:功能(数据){
labels=data.labels
默认\u项=数据。默认\u项
label1s=data.label1s
default\u item1s=data.default\u item1s
设定图()
},
错误:函数(错误\u数据){
console.log(错误\u数据)
}
}
)
函数集图表(){
var ctx4=document.getElementById('myChart4').getContext('2d');
var myChart4=新图表(ctx4{
类型:'bar',
数据:{
标签:label1s,
数据集:[{
标签:document.getElementById('tag4')。textContent=='补足次数最多的项目(3个月)''补足次数最多的引用':
“références avec nombre de réapprovisionnementélevé”,
数据:默认_item1s,
背景颜色:[
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
],
边框颜色:[
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
"rgba(233,48,48)",,
],
边框宽度:1
}]
},
选项:{
比例:{
雅克斯:[{
scaleLabel:{
显示:对,
标签字符串:document.getElementById('tag4')。textContent=='补货次数最多(3个月)'补货次数':'重新补货的名称'
},
网格线:{
drawOnChartArea:错误,
滴答声:{
贝吉纳泽罗:是的
}
}
}],
}
}
})
}
}
)
老实说,在这一点上,我是一种的东西来尝试