最近在学习《Flask web开发》这本书,基本上已经跟着书把书中的示例代码都写了一遍。现在感觉对Flask有些入门了,想自己写一个Flask应用,但是又感觉无从下手。
据说好的程序员应该用大于50%的时间做设计,其它时间写代码。目前我能想到的设计项目有:
程序逻辑、功能设计(用户使用时的流程,该实现哪些功能)
数据库模型设计(Models)
表单设计(Forms)
路由设计(Views)
Jinja模版设计(Templates,包括可以复用的模版代码)
前端设计(准备使用bootstrap框架,但仍然要考虑:该在哪个页面引入哪个页面的超链接,比如登录页面中添加一个注册的链接;页面内容的布局)
安全设计(在前端和后端都要对用户的提交做限制,以及对用户权限的检查)
请问各位大神在做Flask web开发的时候思路是怎样的?我列出的这些是否正确,该以一个怎样的顺序进行?
伊谢尔伦2017-04-18 09:17:05
초대해주셔서 감사합니다~
우선, 좋은 프로그래머는 디자인에 시간의 50%를 소비한다고 누가 말했습니까? 무의미한 말! 좋은 프로그래머는 리팩토링(UT)에 시간의 80%를 소비합니다!
제 생각에 이 질문의 문제는 생각은 너무 많이 하고 행동은 너무 적다는 점인 것 같아요.
웹 프로그램은 어떻게 개발하나요? Flask를 선택한 이유는 개발 속도가 충분히 빠르고 Flask의 코드 구성 구조 집합에 익숙하여 전체 코드 프레임워크가 설정되었기 때문입니다. 코드의 궁극적인 목적은 데이터를 조작하는 것에 지나지 않으므로 데이터(모델)는 잘 정의되어 있고, 다른 뷰와 서비스는 데이터에 대한 CRUD에 지나지 않습니다.
역시 CRUD인데 왜 이렇게 잘 쓰는 사람들이 있는 걸까요? 경험과 더불어 리팩토링도 필수입니다. 좋은 코드를 다듬는 것은 장인 정신을 반영하는 시기입니다. 그러나 대규모 환경에서는 한두 번 리팩토링할 수 있는 사람은 더욱 적습니다. 3~5번 정도 리팩토링을 하는 인내심이 있어서 좋은 디자인이 많지 않고, 좋은 디자인도 리팩토링 된다고 생각하기 때문입니다.
마지막으로, UT는 재건의 초석입니다.
黄舟2017-04-18 09:17:05
네, 거의 그렇습니다. 비즈니스 요구 사항에 따라 모델을 설계하고 뷰에 비즈니스 논리를 구현합니다. 다양한 프런트엔드 옵션이 있습니다. 먼저 블로그를 작성하고, 웨이보나 다른 앱에 글을 올려 연습해 보세요.
高洛峰2017-04-18 09:17:05
초대해주셔서 감사합니다~
사실 문제 같은 질문은 여기서 질문하기에는 적합하지 않습니다. 결국 이곳은 구체적인 실무 문제를 해결하는 커뮤니티이고 문제의 질문은 일반적인 방향에 관한 것입니다.
어떻게 배우는지 묻고 싶다면 다른 방법은 없습니다. 그냥 소스 코드를 읽어보세요. 현재 상황에서는 너무 많은 계획을 세우고 실행하지 않는 것은 쓸모가 없습니다.
가장 간단한 로그인 기능부터 시작하여 로그인 성공 후 로그인된 사용자 정보를 표시하는 것이 좋습니다. 따라서 데이터베이스 사용자 테이블, 양식 제출, 비밀번호 확인, 로그인 점프 등과 같은 기본 작업이 여기에 포함됩니다. 이 기능이 완료되면 다른 기능을 손쉽게 확장할 수 있습니다. 만약 당신이 작성한 프런트엔드가 보기에 좋지 않다고 생각된다면, 당신이 언급한 부트스트랩 프런트엔드 UI 프레임워크를 사용하면 아름답고 간단한 작은 웹사이트를 만들 수도 있습니다.
이후에는 어떤 것을 만들고 싶은지 고민하고, 제품 관련 지식을 습득하고, 자신의 제품처럼 다루며 지속적으로 보완하고 개선해 나갈 수 있습니다. 점차적으로 클라우드 서비스 도메인 이름을 구매하여 서버에 배포함으로써 운영 및 유지 관리에 대한 기본 지식을 배울 수 있습니다. 이때 자신의 제품을 홍보하려고 노력하게 되며, 운영과 관련된 지식을 보충할 수 있습니다. 점차 유저가 생기고, 자금을 모으고 싶고, BP가 되고 싶고, 비즈니스 모델을 파고들고, 앞으로는...
너무 많지만 상상일 뿐입니다. 먼저 로그인 기능을 구현하는 첫 번째 단계를 완료해야 합니다. 저도 한걸음 한걸음 초보에서 왔습니다. 이해하고 참을 수 있지만, 책에서 벗어나 실제로 뭔가를 써보면 아마 그런 질문은 없을 것 같아요.
迷茫2017-04-18 09:17:05
저도 최근에 이 책을 공부하고 있는데, 먼저 작은 프로젝트부터 시작해서 대략적인 프로토타입을 완성한 후에 세부 사항을 최적화할 수 있다고 생각합니다.