Проблемы улучшения кода: Через 2 недели после улучшения приведенного ниже кода я смог написать приведенный ниже код, но у меня все еще есть проблемы и я не работаю так, как задумано.
Есть 2 основные проблемы
Ошибка индекса вне диапазона в контексте [j_list [i]] = j_list [i]
context = {
'instance': project,
'user': user,
}
hide = [0,1]
for i in range(10):
j_list = "hide" + str(i)
fp_list = "fp_list_" + str(i)
j_list = str(hide[1])
context[j_list[i]] = j_list[i]
messages.add_message(request, messages.INFO, j_list)
messages.add_message(request, messages.INFO, fp_list)
try:
fp_list[i] = FP.objects.filter(id__in=group[i][1])
context[fp_list[i]] = fp_list[i]
j_list[i] = hide[0]
except IndexError:
fp_list[i] == "null"
return render(request, 'projects_detail.html', context)
Старый рабочий код, но он слишком уродлив, и я пытаюсь улучшить себя в соответствии с приведенным выше кодом:
hide0=1
hide1=1
hide2=1
hide3=1
hide4=1
hide5=1
hide6=1
hide7=1
hide8=1
hide9=1
try:
fp_list_0 = FP.objects.filter(id__in=group[0][1])
hide0 = 0
except IndexError:
fp_list_0 = "null"
try:
fp_list_1 = FP.objects.filter(id__in=group[1][1])
hide1 = 0
except IndexError:
fp_list_1 = "null"
try:
fp_list_2 = FP.objects.filter(id__in=group[2][1])
hide2 = 0
except IndexError:
fp_list_2 = "null"
try:
fp_list_3 = FP.objects.filter(id__in=group[3][1])
hide3 = 0
except IndexError:
fp_list_3 = "null"
try:
fp_list_4 = FP.objects.filter(id__in=group[4][1])
hide4 = 0
except IndexError:
fp_list_4 = "null"
try:
fp_list_5 = FP.objects.filter(id__in=group[5][1])
hide5 = 0
except IndexError:
fp_list_5 = "null"
try:
fp_list_6 = FP.objects.filter(id__in=group[6][1])
hide6 = 0
except IndexError:
fp_list_6 = "null"
try:
fp_list_7 = FP.objects.filter(id__in=group[7][1])
hide7 = 0
except IndexError:
fp_list_7 = "null"
try:
fp_list_8 = FP.objects.filter(id__in=group[8][1])
hide8 = 0
except IndexError:
fp_list_8 = "null"
try:
fp_list_9 = FP.objects.filter(id__in=group[9][1])
hide9 = 0
except IndexError:
fp_list_9 = "null"
context = {
'instance': project,
'user': user,
"fp_list_0": fp_list_0,"fp_list_1": fp_list_1,"fp_list_2": fp_list_2,
"fp_list_3": fp_list_3,"fp_list_4": fp_list_4,"fp_list_5": fp_list_5,
"fp_list_6": fp_list_6,"fp_list_7": fp_list_7,"fp_list_8": fp_list_8,
"fp_list_9": fp_list_9,
"hide0": hide0,"hide1": hide1,"hide2": hide2,"hide3": hide3,"hide4": hide4,
"hide5": hide5, "hide6": hide6, "hide7": hide7, "hide8": hide8, "hide9": hide9,
}
return render(request, 'projects_detail.html', context)
Ты прав. если бы я мог управлять этим кодом, я бы не стал считать до 10 для цикла. Я бы считал до отфильтрованного числа, тогда мне не потребовалось бы попытки, кроме части, как вы упомянули.
j_list = "hide" + str(i) это строка j_list[i] это буква за индексом в строке, которая является вашей проблемой.






hide_dict = {}
for i in range(0,10):
hide_dict['hide'+str(i)] = 1
#Do the same with your Fp lists
fp_dict = {}
for i in range(0,10):
fp_dict['fp_list_'+str(i)] = ""
for key, value in fp_dict.items():
try:
fp_dict[key] = FP.objects.filter(id__in=group[int(key.replace('fp_list_',''))][1])
hide_dict['hide'+(key.replace('fp_list_','') ] = 0
except IndexError:
fp_dict[key] = "null"
context = {
'instance': project,
'user': user,
'fp_dict':fp_dict,
'hide_dict':hide_dict
}
Тебе лучше использовать словари, чувак, надеюсь, я тебе помог
Большое спасибо за идею, я буду исследовать дальше. Он получает данные и отображается на веб-сайте, когда я использую message.info, но не в таблице, как раньше. По какой-то причине он не отображается в цикле шаблона странно.
да, поскольку context['fp_dict'] - это объект, который вам нужно перебирать в шаблоне, например, {% for key, value in fp_dict.items %}, то же самое и для hide_dict
Я повторял fp_list_0 и другие один за другим, хорошо, так лучше, позвольте мне попробовать
Вы можете «встроить» часть
try-exceptв циклfor, но это уродливый способ сделать это. Вы можете просто проверить, существует ли этот элемент.