fork download
  1. #Проблема: данные в list.html обновляются только после двукратного
  2. #нажатия кнопи submit в форме
  3.  
  4. ## в base.html есть inclusion tag {%user_settings%}
  5. #он показыает форму с checkbox
  6.  
  7. #list.html - шаблон для view.course_list, который extends base.html
  8. #в этом вью фильтруется в зависимости от данных из {%user_settings%}
  9.  
  10. ### templatetags.py
  11. # тут мы устанавливаем BooleanFields
  12. # например show_online_only
  13. @register.inclusion_tag('csun_ninja/user_settings.html', takes_context=True)
  14.  
  15. def user_settings(context):
  16. request = context['request']
  17. if request.user.is_authenticated():
  18. form_instance = UserSettings.objects.get(student=request.user)
  19. if request.method == "POST":
  20.  
  21. form = PreferenceForm(instance=form_instance,
  22. data=request.POST)
  23. if form.is_valid():
  24. form.save()
  25.  
  26.  
  27. else:
  28. form = PreferenceForm(instance=form_instance)
  29. return ({'form': form, 'request':request})
  30.  
  31. ###### views.py
  32. def course_list(request):
  33. sections_list = Section.objects.all().order_by('course')
  34. current_settings = UserSettings.objects.get(student=request.user)
  35.  
  36. # тут пропущено непринципиальное
  37.  
  38. if current_settings.show_online_only == True:
  39. sections_list=sections_list.filter(section_schedule__section_room='ON LINE')
  40.  
  41. return render(request,
  42. 'csun_ninja/list.html',
  43. {'sections':sections,
  44. 'section_schedules':section_schedules,
  45. 'page':page})
Runtime error #stdin #stdout #stderr 0.03s 9984KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Traceback (most recent call last):
  File "./prog.py", line 13, in <module>
NameError: name 'register' is not defined