Anvil CRUD 튜토리얼 변경 노트
개요
Anvil는 파이톤으로 인코딩된 웹 기반의 종합 개발 환경이다.
하나의 항목은 다음과 같이 구성된다.
이 강좌의 항목을 조금 개조해 지적 문답집 응용으로 만들었기 때문에 당시 노트를 소개한다.
전제 조건
News Aggregator Tutorial라는 전제하에 설명한다(프로젝트를 제작하려면 Anvil에 서명해야 한다).
News Aggregator Tutor에서는 뉴스 데이터를 사용하지만, 이렇게 이 구조를 문답집 응용으로 사용했다.
수정점
이름 바꾸기
처리해야 할 데이터(구조가 같다)가 뉴스에서 수수께끼로 바뀌기 때문에 간단명료하게 이름을 바꿨다.
이름 바꾸기
처리해야 할 데이터(구조가 같다)가 뉴스에서 수수께끼로 바뀌기 때문에 간단명료하게 이름을 바꿨다.
그렇긴 한데, 신경 쓰이는 부분도 있어서 조금 더 개조해 봤어요.
QuestionView
QuestionView 형식이 다음과 같이 변경되었습니다.
질문 및 답안 탭 추가
'제목'과'보도본문'은'문제'와'응답'으로 사용되기 때문에'문제'와'응답'을 각각 표시하는 것이 좋겠다고 판단해 라벨을 추가했다.
방법은 Toolbox에서 Label을 끌어 놓는 것입니다.
Column Panel과 Flow Panel을 사용하여 레이아웃 디자인을 조정합니다(이상적이지는 않지만...).
답변 표시/숨기기
수수께끼지만 답은 동그랗기 때문에 답안을 표시하거나 숨기는 것을 선택했습니다.
Toolbox에서 CheckBox를 끌어 놓습니다. 이름은
answer_check
입니다.초기 상태는 오류 상태를 검사하는 것으로
change
이벤트가 추가되었습니다.이벤트 처리 프로그램은 클릭할 때마다 답을 표시하거나 숨깁니다.
QuestionView
def answer_check_change(self, **event_args):
"""This method is called when this checkbox is checked or unchecked"""
self.answer_label.visible = self.answer_check.checked
응답자도 초기 상태를 숨겼다.범주 초기값
튜토리얼만 그리면 새 기록을 만들 때 아무것도 하지 않고'SAVE'를 누르면 오류가 발생합니다.
카테고리는 외부 참조이지만 숫자 값이 없기 때문입니다.
논을 허용하는 방법과 폼을 닫기 전에 검증하는 방법을 몰라서 초기값을 주는 것(강행)으로 해결했다.
초기 값을 제공하려면 문제 단추를 만드는 이벤트 처리 프로그램
Homepage
은 다음과 같습니다.수정 전
Homepage
def add_question_button_click(self, **event_args):
"""This method is called when the button is clicked"""
new_question = {}
save_clicked = alert(
...
수정 후Homepage
def add_question_button_click(self, **event_args):
"""This method is called when the button is clicked"""
default_category = anvil.server.call('default_category') # 追加
new_question = {'category': default_category} # 変更
save_clicked = alert(
...
서버 측 코드에 범주의 초기 값을 가져오는 함수를 추가합니다("Python"분류가 있을 때).ServerModule1
@anvil.server.callable
def default_category():
return app_tables.categories.get(name='Python')
버튼을 흐트러뜨리다
가능하다면 질문을 하나 내고 대답하면 다음 질문이 나올 거예요. 그렇게 하고 싶지만 개조의 범위를 넘어선 것 같아서 카드를 씻는 버튼으로 얼버무렸어요.
규격으로 아래와 같다.
버튼 추가
카드 세탁 버튼과 카드 세탁 해제 버튼이 추가돼 각각
shuffle_button
과unshuffle_button
였다.코드의 추가, 변경
클릭 혼란 버튼 처리 프로그램
Homepage
def shuffle_button_click(self, **event_args):
questions = self.questions_panel.items
self.questions_panel.items = random.sample(questions, len(questions))
self.unshuffle_button.enabled = True
버튼의 클릭 처리 해제Homepage
def unshuffle_button_click(self, **event_args):
self.refresh_questions()
refresh_questions()
방법(원래refresh articles()인 방법)도 변경Homepage
def refresh_questions(self):
self.questions_panel.items = anvil.server.call('get_questions')
self.unshuffle_button.enabled = False # 追加
데모
이상의 변경에 따른 문답집 적용은 다음 URL에서 공개한다.
https://Z7NSR2ZWKFYP6CJK.anvil.app/OGKX5IPZ2SLK3TKVBPVJLZGH
감상
아직 쉽게 생각할 수 있는 느낌은 아니다.
자신의 생각대로 안빌의 UI를 설계하려면 길이 험할 것 같다.
UI를 최대한 활용하기보다는 다음 Anvil uplink 구조를 시도해 보십시오.
Anvil UPlink는 로컬에서 실행되는 모델 등을 웹을 통해 적용합니다(API 서버 느낌?).사용할 수 있는 구조인 것 같아요.
아직 쉽게 생각할 수 있는 느낌은 아니다.
자신의 생각대로 안빌의 UI를 설계하려면 길이 험할 것 같다.
UI를 최대한 활용하기보다는 다음 Anvil uplink 구조를 시도해 보십시오.
Anvil UPlink는 로컬에서 실행되는 모델 등을 웹을 통해 적용합니다(API 서버 느낌?).사용할 수 있는 구조인 것 같아요.
Reference
이 문제에 관하여(Anvil CRUD 튜토리얼 변경 노트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/satamame/items/6b6ab861906a30014875텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)