Web2py-구성 요소
구성 요소는 자율적으로 작동하는 웹 페이지의 기능적인 부분으로 정의됩니다. 웹 페이지에 포함 된 모듈, 컨트롤러 및보기로 구성 될 수 있습니다. 응용 프로그램의 구성 요소는 현지화 된 태그 여야하며 성능은 모듈과 무관 한 것으로 간주됩니다.
web2py에서 주요 초점은 페이지에로드되고 AJAX를 통해 컴포넌트 컨트롤러와 통신하는 컴포넌트를 사용하는 것입니다.
web2py에는 함수가 포함되어 있습니다. LOAD 함수를 사용하여 명시적인 JavaScript 또는 AJAX 프로그래밍없이 구성 요소를 쉽게 구현할 수 있습니다.
간단한 웹 애플리케이션 즉“test”파일의 사용자 정의 모델로 web2py 애플리케이션을 확장합니다.models/db_comments.py”.
db.define_table(
'comment_post', Field('body','text',
label = 'Your comment'),auth.signature
)
위의 코드는 "comment_post”을 적절한 테이블 정의로 지정하십시오. 작업은 "의 기능을 사용하여 구현됩니다.controllers/comments.py”.
def post():
return dict(
form = SQLFORM(db.comment_post).process(),
comments = db(db.comment_post).select()
)
해당보기는 다음과 같이 표시됩니다.
{{extend 'layout.html'}}
{{for post in comments:}}
<div class = "post">
On {{= post.created_on}} {{= post.created_by.first_name}}
says <span class = "post_body">{{= post.body}}</span>
</div>
{{pass}}
{{= form}}
페이지는 주어진 URL을 사용하여 액세스 할 수 있습니다- http://127.0.0.1:8000/test/comments/post
위에서 언급 한 방법은 뷰에 액세스하는 전통적인 방법으로, LOAD 함수 구현으로 변경할 수 있습니다.
확장 기능을 사용하여 새보기를 만들면됩니다. ".load" 레이아웃을 확장하지 않습니다.
생성 된 새보기는 "views/comments/post.load" −
<div class = "post">
On {{= post.created_on}} {{= post.created_by.first_name}}
says <blockquote class = "post_body">{{= post.body}}</blockquote>
</div>
{{pass}}
{{= form}}
페이지에 액세스하는 URL은 다음과 같습니다. http://127.0.0.1:8000/test/comments/post.load
LOAD 컴포넌트는 web2py 애플리케이션의 다른 페이지에 임베드 될 수 있습니다. 다음 문을 사용하여 수행 할 수 있습니다.
{{= LOAD('comments','post.load',ajax = True)}}
예를 들어 Controllers 다음과 같이 편집 할 수 있습니다-
def index():
return dict()
에 View, 우리는 구성 요소를 추가 할 수 있습니다-
{{extend 'layout.html'}}
{{= LOAD('comments','post.load',ajax = True)}}
페이지는 URL로 액세스 할 수 있습니다- http://127.0.0.1:8000/test/default/index
구성 요소 플러그인
구성 요소 플러그인은 고유하게 정의하는 플러그인입니다. Components. 구성 요소는 모델 정의를 사용하여 데이터베이스에 직접 액세스합니다.
이전 예에서 언급했듯이 주석 구성 요소는 comments_plugin 할 수 있습니다 Models 섹션-
"models/plugin_comments.py"−
db.define_table(
'plugin_comments_comment',
Field('body','text', label = 'Your comment'),
auth.signature
)
그만큼 Controller 다음 플러그인이 포함됩니다.
def plugin_comments():
return LOAD('plugin_comments','post',ajax = True)