2014-09-27 2 views
0

나는 fullcalendar가 포함 된 django 페이지가 있습니다. 내 유스 케이스는 이벤트를 클릭 할 수 있기를 원한다는 것입니다. 이벤트를 편집하려면 팝업이 열립니다 (이벤트는 장고 모델입니다). 나는 이것을 할 수있는 간단한 방법을 찾을 수 없기 때문에 올바른 키워드를 찾을 수 없다고 생각합니다. 이상적으로, 나는 html로만 폼을 반환하는 뷰 파일의 get 메소드를 원합니다. Ajax 호출로 fullcalendar 콜백에서 호출하고 팝업 바디를 채 웁니다.Ajax에서 html로 Django 폼 가져 오기

저는 웹 전문가가 아닙니다. 어휘가 올바른 것이 아닌 경우 유감스럽게 생각합니다 .--).

건배, 엠마누엘

를 들어
+0

페이지 내부에 나타나고 특정 페이지를로드하도록 프로그래밍 할 수있는 일종의 팝업 대화 상자 인 "javascript modals"를 찾을 수 있습니다. 그런 다음 사용자가 캘린더 위젯을 클릭 할 때마다 이벤트를 편집하는보기의 URL을 가진 새로운 모달을 표시합니다 (이 '/ events/edit /? date = 2014-09-27'). – Tiago

답변

0

클래스 기반이 같이 할 수 있습니다보기 :

1) JSON 형식으로 아약스를 통해보기의 반환 내용 (대한 AjaxMixin 쓰기) 필요한보기이 추가,

$('open_form_button').on('click', function(e){ 
    e.preventDefault(); 
    $.post('{% url 'view_which_return_form' %}' , function(data) { //may use and get, no sense 
     if (data.success) { 
      $('#place_for_form').html($($.parseHTML(data.html,document,"true")).filter('*')) 
     } 
    }); 
}); 
,369이 같은 HTML 페이지에있는 반환 형식

class LazyEncoder(json.JSONEncoder): 
    def default(self, obj): 
     if isinstance(obj, Promise): 
      return force_text(obj) 
     return obj 

class AjaxViewMixin(View): 
    """ 
    A mixin that can be used to render a JSON response for CBV. 
    """ 
    payload = {} 

    def render_to_response(self, context, **response_kwargs): 
     if self.request.is_ajax(): 
      html = render_to_string(self.template_name, context, context_instance=RequestContext(self.request)) 
      payload = {'success': True, 'html': html} 
      payload.update(self.payload) 
      response_kwargs['content_type'] = 'application/json' 
      return HttpResponse(json.dumps(payload, cls=LazyEncoder), **response_kwargs) 
     return super(AjaxViewMixin, self).render_to_response(context, **response_kwargs) 

2)

Ajax를 통해 변수 'html'에 렌더링 된 양식 블록을 반환하고 필요한 위치에 삽입하십시오. 는 반환 된 데이터에 대한

$($.parseHTML(data.html,document,"true")).filter('*') 

를 사용하여 기억, 또는 반환 블록에서 당신 스크립트가 제대로 작동하지.