저는 Python을 처음 사용하고 장고를 시험 중입니다. 나는 페이지 요청 동안 나에게 이상한 행동이 무엇인지보고있다. 나는 내 TemplateView
클래스를 확장 한 클래스를 작성하여 해당 클래스의 get_context_data
메서드를 재정의 할 수 있습니다. 그 방법의 나의 새로운 버전에서는 내가 그렇게 같은 context
을 변경하고 있어요 :Python 목록에 요소 추가 두 번 추가
class adminUpload(TemplateView):
template_name = "adminupload.tpl.html"
def get_context_data(self,**kwargs):
context = super(TemplateView, self).get_context_data(**kwargs)
context['js_paths'] = webapp.settings.template['js_paths']
logger.debug('adding')
logger.debug(context['js_paths'])
context['js_paths'].append('/static/path/to/js/file.js')
logger.debug(context['js_paths'])
return context
을 그리고 내 URL을 라우터에 내가 지금처럼이 클래스에 요청을 전달하고있다 :
어떤 이유url(r'^adminupload$', front.adminUpload.as_view()),
, 페이지를 새로 고침 할 때마다 context['js_paths']
목록이 하나의 항목 (예 : '/static/path/to/js/file.js'
)보다 길어 지므로 페이지를 5 번 리로드하면 목록에 5 개의 항목이 모두 해당 값과 함께 추가됩니다. 메소드가 요청 당 한 번만 호출된다는 것을 확인할 수 있으며, 실제로 요청할 때마다 디버그 로그 설정을 검사하여 목록이 커지는 것으로 보입니다.
나는 매우 단순하고 캐싱의 일종을 알고 템플릿 문맥에 대해 이해하지 못하고 있습니다. 올바른 방향으로 향한 어떤 점도 크게 감사 할 것입니다.
'앱의 설정을 참조 webapp.settings' 있습니까? 대신'from django.conf import settings'을 사용해보십시오. –
추가하기 전에'context [ 'js_paths']. append ('/static/path/to/js/file.js')'를 제거하거나리스트에서'/static/path/to/js/file.js'를 확인하십시오. . – furas