2012-04-05 4 views
0

이 코드에서;http 게시글에서 div를 새로 고침

def post(self): 
    chtml = displayhtml(public_key, error = None) 
    template_values = {'captchahtml': chtml} 
    path = os.path.join(os.path.dirname(__file__), 'main.html') 
    self.response.out.write(template.render(path, template_values)) 

http 게시 요청이있을 때, 주어진 템플릿 요소로 전체 페이지를 새로 고칠 수 있습니다.

제 질문은 전체 페이지 대신 div 또는 iframe을 새로 고칠 수 있습니까?

답변

1

예, 요청하는 동안 페이지의 일부를 새로 고칠 수 있습니다.

그러나 브라우저 쪽에서는 응용 프로그램이나 UI 로직이 필요합니다.

한 가지 방법은 전용 iframe을 사용하는 것입니다. iframe을 브라우저 창 내 브라우저 창으로 생각하십시오. 원하는 모든 콘텐츠를 iframe에 삽입 할 수 있으며 페이지에서 콘텐츠를 둘러싼 iframe을 개별적으로 새로 고칠 수 있습니다. iframe 접근법은 주변 페이지의 콘텐츠와 iframe 자체의 콘텐츠가 서로 다른 곳에서 제공되는 경우에 주로 사용됩니다. 예를 들어 "위젯과 같은"페이스 북은 페이스 북의 컨텐츠를 사용합니다. 오랫동안 Facebook은 사람들이 자신의 페이지에 삽입 할 수있는 방법을 제공했습니다. 바로 위젯을 포함하는 iframe입니다. 이런 방식으로 페이스 북은 위젯이 어떤 종류의 페이지에 삽입되었는지에 관계없이 이미지, 브랜딩, 룩앤필 등을 제어 할 수있었습니다.

프레임의 콘텐츠와 주변 비트의 콘텐츠가 appengine 인스턴스와 같은 소스에서 온 경우 iframe은 필요하지 않습니다. 간단한 div를 사용하여 비동기 적으로 업데이트 할 수 있습니다.

이 접근법을 AJAX라고도하며 비동기 Javascript 및 XML을 말합니다. 기본 아이디어는 브라우저에서 서버로 보낸 비동기 요청 (일반적인 페이지 새로 고침주기를 벗어남)을 통해 콘텐츠를 얻는 것을 의미합니다. javascript로 구현 된 브라우저 로직은 UI를 원하는 방식으로 업데이트 할 수 있습니다.

이름과는 달리, 비동기 요청으로부터 XML을 응답으로 보내는 것은 필수적인 것은 아닙니다. 사실 더 일반적인 접근 방식은 JSON을 데이터 형식으로 사용하는 것입니다. 그러나 확실히이 디자인 패턴을 사용할 때 서버의 Python 코드는 일반적으로 형식이 지정된 HTML을 반환하지 않습니다. 합리적인 형식 (XML, JSON, other)으로 데이터를 반환하면 브라우저에서 실행되는 Javascript 논리가 해당 데이터를 HTML로 렌더링합니다.

"표준"웹 브라우저 모델에는 페이지 요청 당 하나의 HTTP 요청이 있지만 (추가 요청은 .css 파일, 이미지 등에 대해 전송 될 수 있음), 추가 요청이있을 때마다 전체 페이지 새로 고침을 의미합니다. AJAX 모델에서 브라우저는 이전처럼 웹 페이지를 초기에 요청하지만 페이지를 완전히 새로 고치지 않고도 추가 HTTP 요청을 비동기 적으로 보낼 수 있습니다.

+0

감사합니다. cheeso. 내 코드에서 아약스를 어떻게 사용할 수 있을지 궁금합니다. –

+0

AJAX 디자인 접근법에 대한 기본 자습서를 읽어야합니다. 다음은 좋은 예입니다. http://www.ibm.com/developerworks/library/wa-aj-ajaxhistory/index.html AJAX가 브라우저에서 사용됩니다. 서버에서 파이썬을 사용하는 것은 중요하지 않습니다. 브라우저에서 AJAX 요청에 응답하려면 서버에 논리를 작성해야하지만 매우 간단합니다. – Cheeso

관련 문제