[음악 재생] 에즈라 ZIGMOND : 안녕하세요, 여러분. 오늘와 주셔서 감사합니다. 이 세미나는 "파이썬입니다 웹 플라스크와 애플 리케이션. " 그래서, 내가 얘기하는거야 이유에 대해 조금 당신은 할 플라스크를 사용 할 수 있습니다 파이썬 웹 앱으로는 반대 거기에 다른 프레임 워크 등에 가장 잘 알려져있다 장고,. 부제는 "와 뭔가 peewee " 우리는 방법에 대해 이야기하는거야 SQL 데이터베이스와 상호 작용할 수 있습니다. 그것은 정말 좋은 수 있습니다. 그래서, 여기에 그냥 빨리 개요이다 내가 가서 할 무엇. 그래서, 먼저, 하나의 슬라이드 즉, 빠른 될 것 이는 모든 것을 얻을하는 방법입니다 컴퓨터에 설정합니다. 나는 시연 할거야 내 로컬 맥 컴퓨터에서이, 그건 그냥 있기 때문에 나는이 일을 한 경우 전에, 나는 그것으로 가장 편안 해요 그러나 이것은 확실히 CD50 IDE에 가능합니다. 그래서, 그 후, 내가 원하는 , 플라스크가 무엇인지 소개 당신을 설득 왜해야 처음에 그것을 사용할 수 있습니다. 그럼, 빠른주지 당신이 무엇의 예 플라스크, 빠른 예에서 할 수있는 당신이 peewee에서 무엇을 할 수 있는지, 그리고 난 당신에게 더 많은 것을 보여줄 것이다 전체 예제 응용 프로그램 나는 우리 것을 함께 넣어 함께 걸을 수 있습니다. 그리고 마지막에 마지막 슬라이드, 내가 가진 당신이 보는 일부 리소스 자세한 내용은 온라인에서. 이 완전하지 않습니다 플라스크를 사용하는 방법에 대한 튜토리얼. 그리고 내가 떠날 희망합니다 질문 시간. 사람은 그냥 로컬보고 같은, 중간에 밖으로 소리 당신은 질문이있는 경우. 그래서 빠른 설치 물건, 당신이 함께 따라하려는 경우, 또는이를 얻으려면 자신의 컴퓨터에 최대 파이썬 2.7.10을 사용하는거야. 플라스크와 함께 작업을 수행 파이썬 3,하지만 내가 좋아하는 이 때문에, 파이썬이 사용 일부 파이썬 패키지 그 아직 3 작동하지 않습니다. 당신은 핍 설치 한 경우, 어떤 파이썬 패키지 관리자입니다, 파이썬 경우 생각 보다 크거나 2.7.9 동일, 당신이 이미 설치되어, 그것은이다 이 패키지를 설치하기 아주 쉽게. 당신은 PIP 설치 할 수 플라스크, peewee를 설치 핍, 일반적으로 당신은 sudo를 실행해야 그래서 권한이 운동있다. 그리고, 당신이 사용하는 경우 슈퍼 파이썬의 이전 버전, 나는, 파이썬를 업데이트하는 것이 좋습니다 또는 쉬운 설치를 사용하여 PIP를 설치합니다. 그래서 다음 질문은, 플라스크는 무엇인가? 그리고 내가 먼저, 생각 합리적인 질문 궁금 오랜 시간이 들어, 웹 응용 프로그램은 무엇인가? 그 단어이기 때문에 그 나는 많은 주위에 던져 생각 난 정말 몰랐다. 그리고 가장 좋은 생각 웹 응용 프로그램이 무엇인지의 예, 정말 CS50 금융이다 그것은 정말 그냥 웹 사이트 아니다 하지만 뭔가 당신을 종류와 상호 작용 할 수있다. 사용자 계정이 있고 다른 여러 가지의 물건. 그래서, 정확히 어디 그리 웹 사이트 무슨 사이의 라인, 및 웹 응용 프로그램은, 어떤 종류의이다 임의의,하지만 아이디어를 생각, 이 웹 사이트보다 더 뭔가 그것은 유용한 애플리케이션이다. 그래서, 플라스크 프레임 워크입니다 파이썬을 사용하여 웹 응용 프로그램을 만드는. 그리고 희망, 말 이런, 내가 당신을 설득 할 것이다 당신은 실제로 뭔가를 쓸 수 있음 CS50 금융처럼 파이썬을 사용하는 나는 개인적으로, PHP보다 훨씬 더 좋아. 그래서, 플라스크, 그들은 전화 microframework,있는, 그들은 매우 뜻 간단하지만 신성. 그래서, 그것은, 당신이 필요 단지가 하지만 당신은 더 많은 기능을 원하는 경우, 그것은 그들을 가지고 쉽다. 하지만 그냥 있기 때문에 microframework하지 않습니다 이 작은 프로젝트 만의 것을 의미한다. 나는 말한다 여기에 링크를 오바마 대통령은 2012 년 플라스크를 사용하는 것이 그의 캠페인 웹 사이트, 어떤 희망, 보증의 무언가이다. 하지만 일이 내가 정말 플라스크에 대해 좋아 , 정말하지 않는다는 것입니다 당신을위한 의사 결정의 모든 종류. 그냥 우리가하고 있기 때문에 웹 응용 프로그램에 대해 얘기, I는 루비와 비교해야 레일 및 장고, 모두의 큰 틀이 있지만 둘 다 가정을 에 대해 어떻게 당신이 원하는 데이터베이스와 상호 작용 어떻게 당신이 당신을 제시 할 뷰는, 그들은 확실히있어 그 좋은 측면. 예를 들어, 루비에 레일 이 활성 기록 시스템을 가지고, 이는 정말 좋은 데이터와 상호 작용하는 방법, 하지만 당신은에 루비를 사용하려는 경우 레일, 당신은 종류의에 묶여있어. 그러나 플라스크에, 나는 겠지만 peewee 당신을 보여, 당신은 어떤 종류를 사용할 수 있습니다 데이터베이스의 당신이 원하는, 당신은 그냥 그 당겨 수 있습니다 플라스크에 확장으로. 그래서 왜 내가 정말 플라스크처럼, 그것은 것을이다 당신을 위해 가정을하지 않습니다 일을 기준으로 당신이 정말로 필요하지 않습니다. 그럼, 왜 당신은 플라스크를 사용해야합니까? 장점은 그냥이다 정말 핵심 기능을 가지고 있습니다 그것으로 내장 당신이 필요. 그래서, 당신은 걱정하지 않아도 일의 모두를 이해 당신이 정말로 필요가 없습니다. 당신은 걱정할 필요가 없습니다 기능을 끄는 방법에 대한 당신이 정말로 필요가 없습니다. 내가 언급 한 바와 같이 그리고, 그것은 최고입니다 사물의 확장에 쉽게 추가 할 수 당신은 필요합니까있다. 그들 중 일부는, 플라스크가 그것에 대한 자신의 지원. 그래서 플라스크라는 뭔가가있다 해당 관리 거울 관리자, 장고가 제공하는 패널, 하는 당신에게 좋은 시각적 인 방법을 제공합니다 당신의 웹 사이트를 관리 할 수​​ 있습니다. 그러나 다시, 당신은이 있다면 뭔가 간단하게, 당신은 아마 큰 관리가 필요하지 않습니다 패널은, 그래서 그 슈퍼 좋은 것 같아요. 그리고 단점은, 그 있습니다 당신은 상자 밖으로 적은 전력을 가지고있다. 그래서, 당신은 첫 번째 술병을 열 때, 당신의 파이썬 프로그램에서, 당신은 플라스크에서 입력 수입 *, 또는 무엇이든, 정확히 모두를 얻을하지 않습니다 기능은 당신이 할 수 있습니다. 그래서 당신은 더 명시 적으로를해야 당신이 원하는 기능을 나열합니다. 그래서 한 가지 단점,하지만 작은 웹을위한 건물이라고 생각 나는 같은 애플 리케이션을 보여주는거야 당신은, 그건 정말 문제가되지 않습니다. 그리고 마지막은 무엇인가 오타 인 말을하는데, 덜 표준화 있다는 것입니다 플라스크를 사용하는 방법에 대한 규칙, 다만만큼이되지 않기 때문에 전문적으로 그것을 사용하는 사람들 장고에 비해. 그래서, 당신은 같은 것을 보면, 장고에 "어떻게 X를합니까" 당신은 아마 그것을 찾을 수 있습니다. 좋은 디자인이있다 당신이 사용할 수있는 패턴, 하지만 플라스크, 그것은이다 일종의 자신의 길을 갈, 그냥 왜냐하면 꽤 작은 도서관. 그래서 사람들은 단점은, 그러나 나는 생각한다 것을 아직도 사용하는 것이 라이브러리입니다. 그럼 바로 플라스크에 뛰어 보자. 이것은 확실히하지 않을 것입니다 튜토리얼을 완료하기 위해, 하지만 그것은 당신에게 아이디어를주고 있어요 사물을 구성하는 방법, 그래서 당신이가는 편안한 느낌 오프 및 문서보고 등을 알아내는. 그래서, 내가 정말 열 수 있습니다 처음에는 간단한 예를 들어, 그리고 그 무엇을 보여 모양, 그리고, 우리는거야 조금 더 내려 휴식. 그래서 여기, 내가 그것을 실행하자. 그래서, 지금 내 응용 프로그램을 실행합니다. 나는 사파리를 열 예정하고있어 내 로컬 호스트에서 실행중인. 그래서 난 그냥이 더 큰 만들거야. 그러나 로컬 호스트 : 5000 그리고, 지금,이 모든 수행 , 당신은 웹 사이트를 방문 할 때, 그것은 "안녕하세요 플라스크"를 출력한다 이는, 슈퍼 유용하지 않다 그러나 나는 그 멋진 생각 여기이 작은 파일, 우리는 웹 서버가 실행이 그 뭔가를 인쇄한다. 그래서, 실제로 살펴 보자 두 번째의 코드에서, 그리고 조금 내려 휴식. 크기는 여기에 모든 사람을위한 좋은가요? 그래서, 희망, 당신은 어느 정도있어 파이썬을 사용하여 편안하게. 나는 우리가 볼 수 있으리라 믿고있어 파이썬과 그것을 통해 읽어 보시기 바랍니다. 당신에 대한 질문이있는 경우 아무것도, 나 또한 그 이상 갈 수 있습니다. 그래서 첫 번째 라인은 플라스크에서,이다, 우리는 자본, 플라스크를 가져 "F" 이는 모든의 일종이다 당신이 필요로하는 주요 기능. 때마다 당신이 쓰고있어 파일을 사용하여 플라스크, 당신은을 가져올거야, 그 모든 주요 물건을 가지고해서. 우리가 할 다음 일은, 우리입니다 다만,이 기능 플라스크를 호출 응용 프로그램 객체를 생성, 당신은 야합니다 항상 그렇게 할 것. 다음, 아래로 점프 아래 신속,이 부분은 여기입니다 이다 '의 if_name _ == "_ main_"' 파이썬 규칙의 일종. 그래서 이것은 단지 당신이 경우 실행됩니다 직접 파이썬을 사용하여이 파일을 실행합니다. 그런 다음, 우리는 것, app.run 전화 실제로가는 응용 프로그램을 시작합니다. 그래서, 그 주요 구조이다 그 당신은 어떤 플라스크 응용 프로그램에서해야합니다, 당신이있을 것이다 응용 프로그램 = 플라스크 (_NAME_), 다음 app.run. 그래서, 두 가지 내가 가지고 여기에, 우리는 경로를 부르는 있습니다. 자, 대해 얘기하자 조금 더 라우팅. 내가 다시 슬라이드로 이동합니다. 그래서 가장 기본적인 플라스크의 개념은 라우팅된다. 그리고 그것은 생각이 당신을 파이썬에 기능을 할당 특정 주소 웹 페이지에. 그래서 때마다 당신이 원하는 새로운 경로를 만들려면 이 @의 app.route를 사용 함수 장식. 그래서, 당신은 잘 모르는 경우입니다 파이썬에서 함수 데코레이터, 그것은이 개념의 그 당신은 기능을 할 수 있습니다 하고, 그 위치에 다른 내용을 둘러싸고 있습니다. 그래서 정말,이 장식이 무엇을, , 아래 그것을 함수를 취한다는 것이다 그리고 더 많은 정보를 추가 그것, 그러나 플라스크 실제로 그 일어날 수 있도록하는 일은 매우 아니다 중요하지만 중요한 것은, 즉, 당신은 경로 전에이다 다음이 @의 app.route을두고, 행의 어드레스, 그래서 슬래시는 우리 우리가 웹 페이지를 열 때 보았다. 그래서 홈페이지입니다. 그것은 단지 슬래시 경로입니다. 그리고 당신은이 기능을 가지고있다. 함수의 이름 당신이 원하는대로 할 수있다. 이 반드시 필요하지 않습니다 경로와 함께 할 수 있습니다. 그리고, 어떤 함수의 반환, 함수는 문자열을 반환해야합니다. 그리고 그 문자열 수 , HTML 또는 아무것도 포함 그 무엇을 얻을 것이다 실제로 HTML로 웹 브라우저에 반환, 그리고 그 렌더링합니다. 그래서 이것은 동일한 코드이다 즉, 예에서 있었다 난 그냥 실행되었는지, 그래서 우리는 슬래시가 방문 할 때, 그것은 안녕하세요 함수를 호출하는 그냥 문자열, 안녕하세요 플라스크 반환, 그리고 그 화면에 출력됩니다. 그래서 또 다른 예는있다, 인 때 인사 / 방문 그것은 안녕하세요 말씀을, 밖으로 인쇄합니다 실제로, 안녕하세요 말을해야, 하지만 이제 그 의도적 척하자. 그럼 진짜 빨리 그를 올려 보자. 그래서 당신은 안녕 / 로컬 호스트로 이동하는 경우, 지금은 다른 뭔가를 인쇄 할 수 있습니다. 그래서 어떻게 그냥 빨리 예제 당신은 두 개의 서로 다른 경로를 만들 수 있습니다. 그래서, 지금까지, 슈퍼 유용하지 않다 당신이 할 수있는 훨씬이없는, 당신은 모든 것을 할 수있는 다른 HTML 페이지를 갖는, 당신이 특정를 방문 할 때 페이지 그냥 페이지를로드합니다. 그럼 좀 더 살펴 보자 당신이 할 수있는 유용한 것. 그래서, 한 가지 당신은 할 수 있음 내가 뽑아 예에서 발견 최대, 내가 app.run했던 것입니다 (디버그 = 참). 그리고, 어떤이 디버그 인수는,하지 당신이 당신의 웹 서버를 실행할 때, 당신이 당신의 응용 프로그램에있을 때, 당신이 파일을 변경하는 경우, 그것은 것입니다 자동으로 서버를 다시로드합니다. 그래서 당신은 실제로 필요가 없습니다 슈퍼 유용 다시 시작 파이썬,. 나는 그것을 표시 할 수 있습니다. 내 코드를 올려 보자 거기에 오타가와, 그 오타가 넣어 척 의도적으로 교육적 목적을 위해. 그럼이 다시 추가 할 수 있습니다. 그래서 지금은 안녕하세요 말한다. 나는 그것을 저장합니다. 그리고 우리가 끌어 경우 터미널, 당신은거야 그것은 다시 시작이야 말, 이 변화를 검출하기 때문에, 그래서 지금 우리는이 페이지를 새로 고침 할 때 그것은 올바른 일을 인쇄합니다. 그래서 디버그는 슈퍼 유용합니다. 또한, 당신은 어떤이있는 경우 충돌의 종류, 그래서 날이 응용 프로그램 충돌을 만들어 보자 함으로써이 문자열을 반환하지. 그래서, 그냥이하자 어떤 이유로 없음을 반환하지 않습니다. 그리고 나는이를 방문 할 때 페이지, 그냥 충돌합니다, 하지만 서버는, 그것을 충돌하지 않습니다 실제로 당신에게 매우 유용 등을 제공합니다 모두의 추적은 잘못된 것이다. 그리고, 정말 좋은 무슨가요 이 다시 추적의 모든 단계에서, 당신은 대화를 열 수 여기 쉘 및 종류의 인쇄 무엇 변수는 당신이보고 싶을. 그래서 디버깅 정말 파악하는 데 유용합니다 무슨과에 가고 당신의 서버보다는 보는 (500) 내부와 같은 PHP에서 뭔가 슈퍼 쓸모가 서버 오류. 한가지는, 알아야 할 당신은 온라인으로 응용 프로그램을 넣어 경우 그래서, 공중 볼의 당신 결코에 디버그 모드를 마칠 수 없습니다, 사람들이 실제로 할 수 있기 때문에 그 콘솔을 사용하는 나는 당신은 임의의 코드를 실행하는 것을 보여 주었다. 그래서 그들은 어떤처럼 인쇄 할 수 있습니다 당신이 거기에있는 비밀 코드 그들은 정확하게 볼 수 있습니다 어떻게 당신의 웹 사이트가 작동된다. 그래서 정말 유용 테스트를 위해,하지만 항상 하기 전에 그것을 꺼내주십시오 온라인 아무것도 게시 할 수 있습니다. 그래서 때 당신이 뭔가를 사용하는 PHP처럼,이 아이디어있다 당신은 통과 할 수 웹 페이지 정보 사이 실제로 정보를 넣어 GET 요청되는 URL에, 하지만 플라스크에, 당신은 실제로 수 일종의 그런 일을, 보유 경로를 가짐으로써 그것의 일환으로 변수입니다. 이 보면 그래서 여기에 화면에 예, 우리의 경로가 ( '/ 인사 /'), 그래서, 당신이 방문하는 경우 / 안녕하세요 / 뭔가, 뭔가 실제로 채워진 얻을 것입니다 이름 변수로. 그리고 기능 통지 즉, 그 경로와 함께 제공 매개 변수에 걸릴해야 이름 실제로 있도록 함수에 전달받을. 그리고, 한 번 당신이있어 그 함수의 내부, 당신은 같은 것을 처리 할 수​​ 있습니다 일반 파이썬 변수 그래서 다음, 그것은 것입니다 안녕하세요 인쇄하고, 사용하여 이름을 입력합니다 일부 문자열 형식. 그래서 라우팅에 변수 부분을 추가하려면, 당신은 표시 각도 브래킷을 사용합니다. 그리고 선택적으로 사용할 수 있습니다 무엇 컨버터라고. 그래서, 당신은이를 넣어 경우 콜론 주석, 당신은 그것의 지정할 수 있습니다 INT, 또는 부동 소수점, 또는 경로, 그것은 자동으로 변환합니다. 또한 변환을 수행 할 수 있습니다 파이썬 함수 내, 그냥 캐스트를 사용하여,하지만 때로는 경우 당신은 INT의 수 있도록하려면, 당신은 넣을 수 있습니다 거기에 변환 규칙. 그럼 예를 당겨 보자 일부 변수 규칙. 그래서 여기,이 기본 같은이 플라스크 가져 오기에서와 구조 플라스크, 응용 프로그램 = 플라스크 (_NAME_) 그리고, 그것은 끝에 달리고. 우리는이 두 가지가 여기에 변수 경로. 그리고 첫 번째이고, 내가 보여준 하나 이었다 슬라이드에서 그냥 문자열 이름에 소요 그리고, 이름 안녕을 인쇄합니다. 다음, 두 번째 하나는 변환을 사용합니다. 그래서이 자동으로 변환됩니다 int로, 다음, INT을 두 배로 그를 인쇄 할 수 있습니다. 그리고, 우리는 모든 종류의 작업을 수행하지 않습니다 그 안에 변환 플라스크가 돌봐 때문이다. 그래서이 실행하자. 당신은 플라스크가있는 경우 응용 프로그램을 실행, 당신은 그것의-C를 제어 할 수 있습니다 서버가 실행을 중지합니다. 그리고 나는 변수를 실행합니다. 그럼 로컬 호스트 / 인사 / 에즈라로 이동하자 희망이 나에게 인사를한다. 그래서 변수에 내 이름으로했다 경로, 그리고 여기에 가득. 그래서 나는 또한 빠른 보여주지 두 배의 예. 그래서 3 / 더블 /로 이동하는 경우, 그것은 6을 출력합니다. 그래서이 처리했다 우리의 전환. 그래서 당신은 또한 함께 할 수 있습니다 플로트, 그리고 뭔가 특별한, 당신이 뭔가를 지정해야하는 경우 이 슬래시를 수용 할 수있는 경로, 하지만 일반적으로 문제가되지 않을 것이다. 지금까지 우리는 여전히이 다만 반환 된 매우 흥미없는 문자열. 우리는 실제로 반환 할 수 있습니다 문자 HTML 문자열. 그래서 코드에서 우리는 뭔가를 삽입 할 수 있습니다 B-태그가 굵게하려면, 그러나 대부분의 시간을 당신에게 실제로 싶지 않아 HTML 코드를 작성 할 수 파이썬 코드에서. 그것은 정말 지저분 도착 그것은 좋은 시간이 아니다. 플라스크는 우리가 밖으로 분리 할 수​​ 있습니다 템플릿이라고 무엇에 HTML, 만약 그렇다면 당신이 생각하고 MVC 모델의 관점에서 당신이 잘 알고 있음, 희망, 작동 CS50 금융과 조금, 당신은 파이썬 파일을 생각할 수 컨트롤러, 더 인 것으로 그들은 어떤와 상호 작용 당신이있을 수 있습니다 데이터 모델. 그리고 그들은보기로 부르고있다 그보기로 정보를 전달 정보를 입력합니다 HTML에서 그것은 필요가있는. 그리고 우리는 그 조회수를 부르는 클래스 템플릿입니다. 그래서 플라스크는 다른 파이썬을 사용 모듈이 자동 것 설치 핍 때 설치 플라스크 신사를 호출하는 당신은이를 추가 할 수 있습니다 HTML에 주석 화면에 표시되는 것으로, 그 수 당신은, 조건문 같은 것들에 넣어 그리고 HTML로 반복합니다. 그래서 그 방법처럼 조금 보이는 HTML 파일 내에 PHP를 사용할 수도 그러나 이것은 바로 그 때 플라스크입니다 서버는 HTML 파일을 제공 그것은이 템플릿 엔진을 실행하고 이 구문 분석과에서 일을 입력합니다. 그래서 플라스크 render_template 기능을 갖는다 여기 하단에 볼 수있다. 그래서 당신은 그것을이 페이지를 방문 할 때 이 hello.html 템플릿을 렌더링 것이다, 다음이 HTML 페이지에 입력합니다. 그래서 그냥이 현실을 실행할 수 신속하고 모양이 어떻게되는지 확인합니다, 그리고, 나는 통과 할 것이다 자세한 세부 사항에서 조금. 그래서, 당신의 템플릿 가고있다 템플릿 폴더에 이동합니다. 그것은 자동으로 내 볼 것이다 템플릿은 템플릿 폴더. 그럼이를 열 수 있습니다. 그래서, 템플릿 예제를 실행합니다. 그래서 / 인사 / 에즈라에 가면, 그것은이 끔찍한있다, 내가 넣어 독이 윤곽 태그입니다. 아주 좋은, 매우 역동적. 나는 큰 팬이에요. 그러나이 경우 발생 난 그냥, / 안녕하세요로 이동? 그래서 그냥 안녕하세요 말한다. 나는 이름을 통과하지 않고 그것은 자동으로 채워. 그래서 그것을 어떻게했는지 보자, 어떻게 우리는 어쩌면 그 윤곽을 제거 할 수있다. 그래서 여기,이 종류의 것입니다 의 흥미로운 예를 들어, 어떻게 스위치에 익숙한 경우 문은 언어로 작동합니다. 이 같은 종류의 것입니다 말 를 통해 가을의 종류, 여기서 당신은 실제로 두 개의 부착 동일한 기능의 다른 경로. 그래서 우리는 / 안녕하세요 경로를 첨부 안녕하세요에 / 인사 / 이름 경로, 파이썬은 다음을 수행 할 수 있습니다 using-- 우리는 지정 기본 기능 arguments--를 지정 그래서 이름이 그래서 존재하지 않는 경우 우리가 가면 그냥 / 안녕하세요, 자동으로 필터링됩니다 이름 없음과 같다. 그럼, 우리는 렌더링 이름 = 이름을 가진 템플릿, 그래서 이름을 매개 변수로 전달됩니다 이 이름의 함수 매개 변수와 동일, 템플릿에. 얼마나 그것은 여전히​​ 설명하지 않습니다 안녕하세요 인쇄 여부를 결정, 또는 내 이름을 인쇄 할 수 있습니다. 그래서 실제로 살펴 보자 템플릿 자체에, 그리고 그 어디에서 오는 참조하십시오. 그래서,이 템플릿 내에서, 우리 실제로 일부 조건부 논리를 가지고, 이는 어떤 사람들은 것 주장, 당신이 실제로 조건을 많이하지 말았어야 템플릿 자체 내에서 논리. 그것은 내 더해야 컨트롤러하지만,이 예를 들어, 그것은 아주 작은 뭔가. 이름 경우 그래서 여기, 우리는 그렇게, 확인 만약 이름이 없음 동일하지 않은, 이름은 실제로이면 다음, 우리는 것입니다 전달 와 이름, 인사 헤더와 천막, 이 모든 일반 HTML, 그렇지 않으면, 우리는 것 안녕하세요 인쇄, 세계 다만 보통. 그래서 몇 가지가 여기주의 사항 당신이 템플릿을 포맷하는 방법에 대한, 이들의 모든입니다 조건문, 종류의 같은 우리가 때를 PHP 방법 당신은 몇 가지 PHP를 삽입 할, 당신은 덜보다 사용하기 질문 마크, 여기 종류의 유사한이다 {%와. 그래서 여기, 우리는 우리의 조건 코드를 가지고있다. 그리고, 당신은 실제로 원하는 경우 말 그대로 뭔가를 평가하고, 인쇄 화면에 그것을 밖으로, 당신 이중 중괄호를 사용한다. 그래서 여기에 이​​중 중괄호가, 그리고, 우리는 이름을 지정, 그 안에 그래서, 평가합니다 변수 이름에있는 에서 전달 템플릿 기능을 렌더링 오히려 바로 인쇄보다 밖으로, 우리는이 제거되었다 경우, 그냥 단어 인쇄 것 "이름을." 그래서, 그 조심하는 뭔가. 그래서 다른 일에 통지는 때를, 그 를 사용하려면 render_template 기능, 우리는 실제로 가져가 그것은 명시 적으로 플라스크에서. 그리고 이것은의 예입니다 플라스크의 모듈화, 당신은 가져올 필요가 없습니다 필요하지 않은 것들. 당신은 가져올 수 있습니다 기능 실제로 때때로, 이는 필요합니까 좋은, 그래서 당신은하지 않습니다 이러한 모든 기능을 가져야 당신이 사용하지 않는 것을 주위에 앉아 뿐만 아니라, 당신은 당신을 잊지 경우 render_template을 가져와야합니다, 당신은 아마 경고를 얻을 수 있습니다 그건 당신이 그것에 대해 알려드립니다. 그래서, 그 템플릿입니다. 그래서, 우리는 방법을 보여 주었다 간단한 웹 페이지를 만들 과에 조금 더 로직을 추가 이는, 가변 라우팅 환산. 그것은 당신이에 따라 서로 다른 일을 할 수 있습니다 당신이 다음도에 가서, URL, 제공 에서 HTML 조금 더 의미 당신이 일을 렌더링하는 방법의 측면. 당신은 모든 넣을 필요가 없습니다 파이썬에서 HTML, 하지만 거의위한 모든 웹 응용 프로그램, 당신은 어떤 종류를 원하는거야 데이터 모델과 연관된. 그래서 전통적으로,이 것 SQL 데이터베이스와 같은 뭔가. 그리고 당신은 상호 작용할 수 있습니다 직접 SQL을. 파이썬은,이 나는 그것이라고 생각합니다. SQLite는 3. 당신은 그냥 SQLite는 3를 가져올 수 있으며, 직접 SQL 쿼리를 실행, 하지만 난 당신에 대해 알고하지 않습니다, 하지만 난 정말, 그냥 싫어 SQL 쿼리를 작성하는. 정말 얻​​을하는 경향이있다 길고 복잡한. 그래서, 뭔가 그 내가 사용하는 것이 무엇처럼 인 ORM로 알려진 객체 - 관계형 매핑. 그리고 지점 객체 관계형 매핑, 두 개의 서로 다른 있다는 것입니다 방법은 당신이 데이터베이스에 대해 생각할 수 있습니다. 예 그래서 교수 마란 보통 클래스에서 사용 엑셀 테이블이며, 이러한 행과 이러한 열을 가지고, 그것은 정말 유용 그것은 SQL로 표현하는 방법 당신이 그것을와 상호 작용하는 방법,하지만 실제로의 또 다른 방법 때로는 그것에 대해 생각하는 데 유용합니다, 클래스와 객체의 관점에서입니다. 그래서 그 대신 사고 각 테이블의 것으로 특정가이 행 정보, 당신은 실제로 수 존재로 생각 각 테이블은 클래스, 의 다음 모든 인스턴스 클래스는 특정 속성을 가지고있다. 그렇게,이 예에서는, 인스턴스 클래스 표에서의 행이며, 다음 각 속성은 것 테이블의 열 수. 그래서, 내가 좋아하는 ORM peewee라고 사용합니다. 그것은 일종의 플라스크처럼, 정말 작다. 나는 그들이 함께 잘 갈 생각, 하지만 다른 ORM들을 많이있다 당신이 사용할 수있다. 인기 하나는 SQLAlchem​​y도 알려져, 나는 왜 내가 원래 기억이 안나요 SQLAlchem​​y도 이상 peewee를 선택 또는 내가 왜 말 것 그것이 최선의 하나라고 생각, 그러나 우리는이를 사용하는거야 하나는 내가 그것을 사용하는 방법을 알고 있기 때문이다. 따라서, 하나의 질문은, 왜 당신이 ORM을 사용하여 귀찮게한다, 대신 직접의 SQL 쿼리를 작성? 그리고 최상의 경우를 생각한다 당신이 실제로 없다는 것입니다 SQL 쿼리를 작성해야합니다. 나는 당신을 보여줄 것 같은 그것은에, 훨씬 쉽게 선택과 같은 일을, 삽입, 삭제, 특히 테이블을 생성. 그것은 훨씬 쉽게 클래스 구조를 작성, 이 구조화보다 만들기 표 문,하지만 한 가지 , 알고있을 것입니다 ORM은 최선을 다할 것입니다 알아 내기 위해 무엇을 가장 효율적인 SQL 쿼리는 것 하지만 때로는 그것이 잘못 가져옵니다. 그리고 당신이있어 특히 큰 데이터베이스 작업, 당신은 쿼리 것을 알 수 있습니다 즉, 빠른 실행되어야한다 실제로 더 많은 시간이 소요되고 있습니다. 그리고 당신은 방법에 후드를 보면 ORM은, SQL로 그 해석된다 이 일을 할 수 있습니다 정말 말도 안되는, 그저 그것 때문에 당신의 의도가 잘못 몸짓. 그리고, 시간이 어디있어왔다 나는 그것을 무시했고, 단지 한 그냥 내 자신의 SQL 쿼리를 실행 그것은 이상한 방법으로 분석되었다 때문이다. 그래서,이 몇 가지 다만 방법에서, 오버 헤드 이 컴파일 당신의 SQL에 아래 문. 자,에 빨리 슈퍼 살펴 보자 데이터 모델의 간단한 예 당신이 사용할 수있는. 그래서,이 때문에 파이썬 코드하고, 당신이해야 할 첫 번째 일은에서입니다 peewee 수입 *. 그래서, 플라스크, 달리, 당신은 어디에 이러한 모든 개별 모듈, 당신은 플라스크를 가져올하고, 템플릿, 일부 다른 사람을 쓰기 우리가 나중에 볼 수 있습니다 즉, peewee에서, 당신은 모든 것을 가져올 수 있습니다 때문에 꽤 작은 도서관이다. 그래서, 당신이해야 할 첫 번째 일이며, 실제로이 데이터베이스 개체를 만듭니다. 그래서, 당신은 DB =위한 SQLiteDatabase, 다음 데이터베이스의 이름. 그리고 이것은 실제로 것 데이터베이스 객체를 생성 당신은 peewee와 상호 작용할 수있다. 다음, 우리가 실제 우리가 만들려는 모델. 그래서 표는 우리가 만들려고합니다. 그래서, peewee 내에서 각 클래스는있다 데이터베이스 내에서 자신의 테이블. 그래서, 모든 클래스 기본 모델에서 상속, 및 자본 M 모델입니다 peewee에 정의 뭔가. 그래서, 당신의 모든 모델은해야 가장 높은 상위 클래스로 상속, 그들은 상속한다 모델,하지만 정말 멋진 것은, 당신이 실제로 당신이 할 수 있다는 것입니다 모델은 서로로부터 상속. 그리고 많은 시간, 당신의 데이터 모델은 반드시 그렇지 좋은 상속 계층 구조를 만들지 만, 그들이 어디에서 시간, 그것은 정말 좋은 데요 당신이 모델을 가지고 있기 때문에 서로 고유. 그래서 우리는이 클래스를 정의 모델을 상속 '학생', 그것은 세 가지 속성이 있습니다. 그것은 인 ID를 가지고 PrimaryKeyField, 어떤 제공 뭔가입니다 peewee으로, 이름은 CharField입니다, 및 등급 IntegerField이다. 그래서이 또는하지 않을 수있다 방법 CS50 실제로 모든 저장 학생들의 성적. 그것은 아니지만, 이것은 내가 어떻게 할 것입니다. 그리고 그것은 내에서,이 이 클래스,이 당신이 할 수있는 일입니다 파이썬, 당신은 중첩 된 클래스를 가질 수 있습니다. 그리고 이것은 뭔가 그는 peewee 필요로합니다. 그래서,이 클래스 메타, 당신은 데이터베이스가 있음을 지정합니다 개체와 같은지 우리가 위에서 만든 그. 그리고이 파일이 표가 무엇인지 말한다 실제로 함유 할 것. 그래서 이것은 당신이 무엇인가이다 당신의 모든 모델 내에서 할 수 있습니다. 당신은 지정해야 이 메타 클래스 내에서 이 데이터베이스는 DB와 동일하다. 내가 가지고 있다면 나는 보통, 무엇을 다른 모델의 무리, 나는 하나의 기본을 가지고있다 모델, 나는 그 보통 그냥 "기본 모델"전화 즉, 메타 클래스가, 그리고 DB 동일한 데이터베이스를 설정한다. 그리고 내 후속 모델의 모든 그 기본 클래스에서 상속합니다. 그리고 나는 걱정할 필요가 없습니다 메타 클래스를 설정하는 방법에 대한. 그래서,이 실제로 얻을 때 SQL 문에 아래로 컴파일, 그것은 다운이 심한 것 같습니다 여기에, "테이블 학생증 정수 만들기 " 도대체 무엇이. 그리고, 나는 짧은 생각, 여기이 SQL 쿼리, 하지만 당신은 여기에이 클래스를 보면 당신은 무슨 일을 정확히 볼 수 있습니다. 당신은 필드의 어떤 종류를 볼 수 있습니다 그들이이라고하는지,있다, 그래서, 나는 생각 이 파이썬 코드를보고 보다 더 많은 읽을 수 있습니다 이 SQL 쿼리를 작성하려고합니다. 그래서,에 위해 실제로 데이터베이스를 사용, 우리는 파이썬 내에서 연결해야합니다. 그래서, 보통이라는 함수를 작성 두 가지 일을 initialize_db. 그것은 데이터베이스에 걸리는 객체 DB과 다만 열리는, 그 연결 데이터베이스에 대한 부분입니다. 방금하지만 실행하는 경우 로컬 컴퓨터에 웹 사이트, 그것은 걱정 슈퍼 큰 문제가되지 않습니다 연결 및 분리에 대한, 그러나 당신이 실행하는 경우 웹 사이트에, 당신 확실 할 때마다 사용자, 확인 할 그들이 밖으로 닫을 때, 그것은 연결 웹 사이트, 그들은 있도록 분리 당신 연결하는 사람들의 무리가 없습니다 데이터베이스에 한 번에. 그리고, 때 당신에게 데이터베이스에 연결, 당신은 db.create_tables 호출 할 당신이 원하는 것을 위해 모델을 나열 테이블을 만들 수 있습니다. 그래서 여기에, 난 그냥 원하는 이 학생을 만듭니다. 그리고, 중요한 것은,이다 안전 = 사실 대부분의 시간을 지정합니다. 그래서이 문 할 것입니다 그것은 그 테이블을 생성 학생 모델 만 그 테이블은하지 않은 경우 이미 생성 된. 즉, 무엇을 안전을 지정합니다. 그래서 덮어 쓰지 않습니다 기존의 테이블, 그것은 단지 새를 만듭니다 테이블이없는 존재하는 경우. 그래서, 당신은 만들 수 있습니다 테이블은 한 번 SQL을 사용하여. 그리고 그 데이터베이스 앉아있다 이 다음 각 시간에 연결 하지만 그것은 단지에 일반적으로 좋다 이 create_tables 호출에 넣어, 그래서, 혹시 삭제 경우 데이터베이스 때 웹을 실행 응용 프로그램을 다시 그것을 다시 할 것이다. 그래서, 안전을 확인하십시오 사실로 지정, 또는 당신은 당신의 데이터를 찾을 수 때마다 사방지고. 그리고, 당신은 단지 호출 할 수 있습니다 설정 initialize_db 연결 및 작성 테이블 필요한 경우. 따라서, 가장 일반적인 것은 당신이 원하는 것, 또는 가장 일반적인 것 중의 하나, 실제로 물건을 삽입하는 것입니다 데이터베이스에. 그래서보다는이 필요 INTO 삽입 쓰기 모두와 함께 문 지정된 값은, 당신은 실제로 호출 할 수 있습니다 학생 클래스의 기능. 그래서, 당신은 클래스를 만들 때 즉, 모델에서 상속 그것은이 방법을 만들 수 있습니다. 그래서, 당신은 클래스 name.create을, 당신은 매개 변수를 지정 당신은 전달하려는. 그래서, 일부 학생을 추가하려면 우리의 CS50 학년 책 예, 나는 누가이 다윗에 놓을 게요 아주 좋은 등급, 그는 95있다. 그리고 나 자신, 누가 일을 아니에요 잘 CS50에, 나는 50이있다. 그리고, 좋은 점에 대한 이 생성 기능이 무엇을, 이 인스턴스를 반환, 또는이다 행은 테이블 내에 생성 것을 그래서 당신은에 그 저장 변수, 나중에 작업 할 수 있습니다. 당신은 주위에 변경할 수있는 나는의 예를 보여 드리겠습니다. 내가하지 않았다는 것을 알 수 있습니다 ID를 지정해야합니다, 이 때문에 때문에 PrimaryKeyField, 자동 것 당신이 그것을 지정하지 않은 경우를 증가. 그리고, 사실, 아마 를 지정하지 않아야합니다, 실수로 수 있기 때문에 누군가 다른 사람의 ID를 소지품. 그리고 당신은 만들고 싶어 이 고유의 있는지 확인하십시오. 그래서, 실제로, 대부분의 당신이 원하는 공통적 인 것은, 아마 밖으로 선택한다 당신이 한 번 데이터베이스 거기에 많은 정보를 가지고있다. 그래서, 당신은 모든 것을 얻으려면, 그래서 선택 별의 동등한 학생들 문에서, 그것을 다만 student.select 것입니다. 그리고 그 배열을 당신을 다시 줄 것이다 학생 모두가 그 안에 객체 당신이 반복하는 것이 당신이 원하는. 당신은 그것의 일을 얻을 수 있습니다. 대부분의 시간, 당신 단지 선택하고 싶지 않아, 당신은 실제로 뭔가를 지정합니다. 그래서, 당신은 체인 수 함께 이러한 함수 호출, 어떻게 체인 같은 것 SQL에서 함께 문. 그래서 당신은) (student.select을 수행 할 수 있습니다. 여기서 이 예에서. 그리고, 당신은 할 수 , 조건을 지정 다만 일반 파이썬을 사용하여 부울 물건을 확인합니다. 그래서,이 경우에, 당신은 원하는 , 당신이 선택하는지 제한 student.grade 50 동일이고, 과 student.name는 에스라와 동일 그래서 그냥 밖으로 저를 얻을 것이다. 그리고 정말, 하나를 발견 미묘한 것은 여기에있다 지정하려는 경우, 그 및 / 또는 및 / 또는 또는, 파이썬에서, 당신은 일반적으로 사용하는 것입니다, 나는 단어 "와"실제로 생각 그러나 여기에서 당신은 하나의 앰퍼샌드를 사용, 이는 일반적으로 비트 연산자입니다, 그러나이 특별한 경우에, 다만 방법의 peewee는 않습니다, 당신은 하나를 사용 앰퍼샌드 지정 "와."하는 즉, 뭔가 그 나는 많은 혼동, 하지만가 나타나지 않습니다 실제로 그 정도. 그리고, 한 번 당신은 모두가 데이터베이스 중 학생들, 작업을 완료 한 후에는 선택이야 당신의 마모 또는 무엇이든, 당신은 foreach 루프를 사용할 수 있습니다, 다만, 파이썬에서 정상 등 반복자의 종류와 또는 배열의 종류와. 그래서 당신은 초 동안, 할 수있다 student.select에 (). 갔지 (Student.grade <75), 그리고 그래서이 뜻을 다시 테이블의 각 학생을 반복 그 등급은, 이하 75 인 이 경우, 여전히 날입니다. 그리고 당신은 내 일을 할 수 그 루프는 같은 나에게 이메일을 보내 나 사실을을에게 내 문제 설정에서 설정합니다. 그래서, 또 다른 한가지는 당신이 할 수 할, 정말 쉽게입니다 테이블 내에서 행을 업데이트합니다. 그래서, 여기에 다시 기억, 당신의 내가 삽입, 나는이었다 값을했다 student.create에 의해 반환, 나는 에스라라는 이름으로 지정. 그리고 지금, 당신은 변경할 수 있습니다 해당 인스턴스 내의 값, 단지 같은 당신 것 파이썬에서 일반 클래스입니다. 그래서 사용자가 설정할 수 ezra.grade = 95 즉, 로컬 복사본을 업데이트 할 것입니다, 하지만 당신은 실제로 원하는 경우 데이터베이스에 그 변경 사항을 커밋, 당신은 ezra.save를 호출해야 그래서 당신은 .save 방법이라고 인스턴스. 그리고 지금, 나는 성공적으로 변경 데이터베이스 내에서 내 자신의 등급. 그래서, 다음의 내가 잡힐 것을 가정 해 봅시다 데이터베이스 내에서 내 등급을 변경. 교수 마란 아마 것입니다 클래스에서 저를 삭제할합니다, 그래서 당신은 .delete를 호출 할 수 있습니다 단지 그 일에 인스턴스 방법. 당신이 원하는 경우에 따라서, 이동 다시이 루프에 여기에, 실제로, 대신 모든 이메일을 보내는 학생들의 그 등급 이하 (75)보다, 당신이 그들을 삭제하고 싶었다, 이 루프에서 당신은 할 수 s.delete 인스턴스를 호출합니다. 그리고 당신이 원하는 바로 그 마지막, 연결을 설정할 때마다 인, 당신은, 당신의 일에 완료 당신은 db.close 호출 할 여기서 DB는 데이터베이스입니다 우리가 전에했다 객체. 그리고 당신은이 있는지 확인하려면 모든 것이 밖으로 폐쇄됩니다. 시원한. 그래서 지금, 나는 예제 응용 프로그램이 있습니다. 나는 종류의 모든 걸 사전했습니다 그래서 상관 라이브 코딩이되지 않습니다 실수,하지만 우리는을 통해 걸을 수 그것과는 플라스크를 넣어하는 방법을 참조 함께 peewee, 간단한 응용 프로그램을 확인합니다. 나는 CS50의 호언 장담을 호출, 그것은이다 간단한 블로그 플랫폼의 종류. 그래서, 먼저, 나는 그것을 실행거야, 그리고 그것이 어떻게 생겼는지 보여 그리고, 우리는 코드에 더 많은 볼 수 있습니다. 좋아, 그냥이를 실행 할 수 있습니다. ,이 쿨 만들어 줄게 조금 작은. 그냥 때문이 아니라 아주 예쁜입니다 나는, CSS를 많이하지 않았다 하지만 무엇을 그것은 가지고 있습니다 블로그 게시물의 데이터베이스, 그리고 그것은 모두 통과 그들, 그리고 그것들을 표시 가장 최근의 순서로 페이지에. 그리고 이건 그냥 몇 가지 게시물이 I는 데이터베이스에 저장했다고. 우리는 새로운을 만들려면 이렇게 이후, 우리는 새 게시물을 추가로 이동 할 수 있습니다 그리고 우리는의 제목을 입력 할 수 있습니다 포스트, 그래서 뭔가 같은, CS50 세미나. 와우, 정말 세미나를 즐기고. 시원한. 그런 다음 게시물을 누르면, 그것은 것입니다 홈 페이지로 다시 리디렉션, 그리고 당신은 그것을 볼 수 있습니다 최신 게시물이 추가되었습니다. 그리고 우리는 여전히 모든 사람이있다. 그래서 지금의이 모든 단계별로하자 코드와이 구현하는 방법을 참조하십시오. 그래서,하자 제일 먼저 생각 실제로 모델입니다 좀 봐. 많은 시간, 때 당신이 뭔가를 설계하고, 당신은 방법에 대해 먼저 생각하고 싶지 당신은, 당신의 데이터를 대표하는거야 그리고 그 주위에 물건을 설계, 그래서 그 모든 것이 의미가 있습니다. 그리고 내가 어떻게이 실제로 나는이 제작되었을 때, 그것을했다 나는 앉아서 생각 나는 게시물에 무엇을 원하는가. 그래서, 여기에서는 동일한 구조를 갖는다 앞서 언급되었다, 우리는 DB = Sqldatabase ( 'posts.db')를 수행한다. 실제로, 당신은 아마 싶지 않아 당신의 이름의 데이터베이스의 하드 코드. 그건 아마 매개 변수해야 그것은 아마, 어딘가에 저장되어 설정 파일에 있지만에서 이 같은 작은 예를 들어, 그것은 그 하드 코드 괜찮습니다. 그래서 지금, 우리는이 게시물 클래스가, 이는 기본 모델에서 상속됩니다. 그리고 다시,이 ID = PrimaryKeyField. 사실, 당신은 지정하지 않은 경우, 나는 실제로이 제거되었다 경우, 우리가 알아서 할 것이다 peewee 자동으로 ID 필드를 만들어 그것은 자동 것 그것을 기본 키를 확인하는 나는 때문에 일반적으로, 정말 좋은 생각 즉, 당신이 갖고 싶어 뭔가 하지만 난 특별히에 넣어 좋아 그냥 그렇게 나는 거기에 있다고 기억합니다. 하지만 당신은 그를 지정하지 않은 경우, 그 자동있을 것입니다. 그럼, 나는 일이있는 DateTimeField이며, 모든 이러한 다양한 분야, 당신 경우 peewee 문서를 보면, 그것은 당신에게 다른 목록을 줄 것이다 당신이 사용할 수있는 필드의 종류. 대부분의 경우, 그것의 유사 당신은 SQL에서 볼 것입니다 무슨에. 그래서 CharField는이있다 VarCharFields, TextField의, 아주 오래 된입니다 블로그 게시물과 같은 텍스트, 잠재적 DateTimeFields, DoubleFields, FloatFields, 그런 모든 것들. 그리고 당신은 다른 인수에 전달할 수 있습니다 여기에, 나는 여기에 지정하지 않았다. 말, 예를 들어, 당신은하고 싶지 않았다 이 게시물은 동일한 제목을 가질 수 있도록, 당신은 지정할 수 있습니다 참 독특한 뭔가 = 그것은 단지 추가 매개 변수의 그것을 다운 컴파일 때 필드 SQL로, 그것은 지정 것 이 가지고 고유해야합니다. 또한 뭔가를 지정할 수 있습니다 NOT NULL 및 다른 모든 것들 당신은 일반적으로 SQL에서 할. 그래서,이 매우 간단하다 날짜가 모델. DateTimeField 내에서, 여기에 주목, 나는 기본이 무엇인지 지정했습니다. 나는 수를 지정 , datetime.datetime.now 때문에 방법의 이 평가됩니다, 실제로 평가 datetime.now 때 이것은 데이터베이스에 삽입 얻는다. 나는, 내가 가진 거라고 생각 이를 재확인하고, 하지만 당신은 다음과 같은 일을 한 경우 실제로, 한 번 그 평가 것 다음 날짜 시간 항상 같은 것입니다. 그래서, 당신이 뭔가를하고있는 단지 경우 날짜 시간에 두 번 확인 이 때 평가 있다고 실제로 다른 삽입, 또는 도착 당신은 혼동 될 수 있습니다. 제목은 단지이다 CharField, 거기에있는 당신이 전달할 수 있습니다 더 인수는 지정 정확히 시간에 당신 이 원하는, 그러나 여기, 정말 문제가되지 않았다. 그리고 텍스트가 될 것입니다 전체 게시물의 텍스트, 그것은 될 것 당신이 원하는해서 텍스트 필드 그것은 꽤 긴 문자열이 될 수 있도록한다. 그리고 우리는이 메타가 서브 클래스 그 단지 우리는 데이터베이스를하도록 지정 이 사실에 개방된다 우리가 여기있는 DB 오브젝트를합니다. 그리고 마지막 우리는이 여기에, 그냥이 기능입니다 우리는 거라고 우리의 주요 응용 프로그램에서 사용 연결하는 데이터베이스를 초기화 그것은 다음 포스트 테이블을 만들 수 있습니다. 이제, 주요 응용 프로그램 자체를 살펴 보자. 그래서 하나는 꽤 것보다 더 비트 우리가 전에 본 적이 있는지, 그러나 희망도 나쁘지 않다. 그래서, 내가이를 확장 할 수 있습니다. 알았어. 그래서, 통지 및 최고 나는 수입 다른 것들의 전체 무리 플라스크에서 우리는하지 않았 음 정말 한 번도 본. 희망, 우리는 통과 할 수 있습니다 이러한 하나 하나의 각 과에 대해 조금 더 이야기 그들은, 예를 기준으로 정렬. 그래서 우리는, 플라스크를 그리고 render_template, 이는 우리가 전에 본 적이 이 요청 개체, 우리가 어떻게 보면 올 것이다 나는 실제로 보여주는 된 형태 공장. 리디렉션 할 수있는, 리디렉션 다시 새로 만들기 포스트에서 원래 홈페이지에 백업 한 다음 다음을 수행 할 수 있습니다 뭔가가 URL, 에 위치를 알아 내기 웹 사이트의 특정 페이지입니다. 그러므로, 다음 내가 할 일은, 내가 가져 오기입니다 모델에서 모든 정보 우리가보고 된 파일. 그리고, 그래. 그래서, 새로운 뭔가가 오는 당신이 취급 할 때까지, 특히 데이터베이스, 지정할 수 있다는 것입니다 전에 호출되는 함수 도착 모든 요청 및 기능 이를 사용하여, 모든 요청 후에 호출 함수 장식 app.before 요청. 그래서이 실행 얻을 것이다 목적지이 함수이다. 이 일 필요는 없습니다 요청 전에 호출, 하지만 일반적으로 그 뭔가 를 호출하는 현명한. 당신은 어떤 기능을 지정할 수 있습니다 당신은 거기라는 싶어 그래서 나는이 initialize_db 지정 우리가 모델로 다시했다 기능 파일, 그래서 모든 요청하기 전에, 데이터베이스에 연결하려고합니다. 서로 다른 두 가지가 있습니다 방법 당신은이 작업을 수행 할 수 있습니다. 당신은 @app을 수행 할 수 있습니다., 난 이 after_request 믿습니다. 및 차이점 after_request 및 teardown_request, after_request 만 일어날 것입니다 요청이 실제로 유효한 된 경우. 그리고, 경우에만 요청이 성공적으로 아무 잘못없는 경우 하지만 teardown_request 성공의 경우에 일어나는 요구, 또는 에러 발생시. 따라서, 일반적으로, 당신이 원하는 teardown_request 사용하는, 당신은하고 싶지 않는 특히 뭔가 다른, 에러의 경우. 그러나 단지 데이터베이스를 폐쇄하는, , 성공 또는 실패 아닌지 우리는 당신이 분리 싶어 데이터베이스에서. 그래서이 db.close,라고 DB 객체. teardown_request 알 수 있습니다 예외로합니다. 실제로이 있다면 그래서 당신은 확인할 수 있습니다 오류는, 폐쇄되었을 때 그러나 여기, 희망,이 오류의 전체를 많이하지 않습니다, 그래서 우리는 단지 종류의를 무시하고있다. 좋아, 그리고 그것의 나머지는 너무 나쁘지 않다. 그래서, 우리는 홈 페이지로 갈 때, 우리는이 home.html을 템플릿을 렌더링 즉 열립니다. 패스는 게시물에 , 어떤이 동일 우리는이 게시물을 기억한다 않습니다 모델은, 그래서 우리는 모든 게시물을 선택 다음 당신이 할 수있는 또 다른 것은, 당신은 WHERE 절을 지정할 수 있습니다 당신을 지정할 수 있습니다 순서, 그리고 우리가 가지고 게시물의 모든 다음 선택 얻고, 우리는별로 주문 post.date.descending. 그리고 그 지정됩니다 때 그들은 실제로, 나와 가장 최근 최초의 하나가 될 것입니다. 그리고, 우리는로 그 전달 home.html을 템플릿, 그래서 실제로 열어 보자 정말 빨리 그 템플릿, 그리고 그 작동하고 방법을 살펴. 그리고이 큰 HTML이 아니라 희망, 우리는 파이썬에 집중할 수 있습니다. 그래서 추가 새에 대한 링크가있다 포스트 등이 경로를 지정합니다 플라스크 내에서 그 우리 바로 여기 인 정의합니다. 이 새 게시물의 경로입니다, 우리는 여기에을 지정합니다. 그리고 그 다음 갈 것입니다 링크입니다 플라스크 서버 내에서 그 노선. 더 흥미로운 것은 여기에 루프 이것이다. 그래서 우리는이 지정 포스트 매개 변수하는 에 전달 render_template 기능, 포스트의 모든 게시물에 대한 에 전달되는 객체입니다. 우리는 인쇄 할 게시물 제목, H1에서, 다음 아래에, 우리는 인쇄 할 단락 내 포스트 텍스트입니다. 그리고 여기, 우리가 실제로 할 수있는 파이썬 함수를 호출, 그래서 우리의 strftime 호출 할 수 있습니다, ST-RF-시간, 당신은 형식 문자열에 전달할 수 있습니다 당신의에서 데이터를 인쇄 할 것이다. 그래서 당신이 할 수있는 아주 좋은 것 실제로이 파이썬 함수를 호출 여기에 내에서. 당신의 서식을 할 필요가 없습니다 제어부 측, 정말로 때문에, 날짜를 포맷하면 뭔가입니다 당신은보기 내에서 처리 할 수​​ 있습니다. 그리고 이러한 퍼센트의 모든 일이 매우 중요하지 않습니다. 당신은 문서를 보면 파이썬에서의 strftime 함수, 모든 이러한 지정 일, 그러나의 그 어떻게, 언제 우리가 찾고 있던 여기에 홈 페이지에서, 그것은 좋은으로이 형식을 날짜, 그것은 지정 AM 또는 PM, 그러나 일반적으로, 우리의 경우 여기가 없었어요, 당신은 아마 약간의 쓰레기를 얻을 수 있습니다 아주 좋은 보이지 않았다 날짜. 그리고 우리를 지정 post.text, 내가하고 수 몇 넣어 가지고 라인은 여기 나누기 각 게시물 사이에 약간의 공간을 넣어. 그래서, 나는 가장 중요한 생각 이 예에서 것은, 당신이 루프이 사용할 수 있다는 것입니다. 그리고 이것은 유사 일 당신은 PHP로 할 수 있습니다. 당신은 반복 할 수 모든이 전달됩니다 그래서, 대신 필요없이해야 할 일 복사 / 붙여 넣기, 복사 / 모든 HTML을 붙여 당신은 단지 다음 번을 작성해야하고, 당신은 모든 게시물을 반복 할 수 있습니다. 그리고 이것은 뭔가 당신이 원하는 것이 일반적 당신은 많은 양의 데이터가있는 경우, 수행하는, 그 데이터의 모든입니다 당신은 비슷한 일을하고 싶다. 그리고, 그냥 기억 때를 그 명시 적으로 뭔가를 인쇄 할 HTML에서, 당신은 사용 여기에 이​​중 중괄호, 하지만 사용자가 지정하고자 할 때 상태에 대한 정보, 나에 대한 루프를 들어, 퍼센트 브래킷을 사용합니다. 그래서, 파이썬으로 다시 가고 코드는, 그래서 설명 어떤 주에서 일어나고있는 경로, 우리가 거​​기 가서, 그냥 모두 표시 게시물, 그러나 질문 어떻게 우리가 실제로받을 수 있나요된다 데이터베이스에있는 게시물 조금 더 재미있다. 그래서, 때 새를 클릭 우리가 여기서 본 포스트 링크, 그것은이 형태로 리디렉션. 그리고는 그냥 간단한 호출이다 render_template 기능, 이는 다음 HTML 형태로 새 게시물에 전달합니다. 그럼 그 살펴 보자. 그래서이 사람은 아주 간단합니다. 그것은 간단한 HTML 양식을 가지고있는 조금 익숙 할 것입니다, CS50 금융 양식을 기반으로. 그래서, 우리는 여기에 작업을 지정합니다. 그리고 여기 당신이 작업하는 경우 PHP로, 일반적으로, 그것을 과 같은 것, create.PHP, 그러나 여기에서 우리는 실제로 경로를 지정 플라스크 서버 내에서. 그리고,이 경로는 대응 생성 행 우리는 여기에서 가지고있는 우리는 1 초에 갈거야. 그래서, 우리는 그것을 지정 그것은, 포스트 방법이다 우리는 보낼 때문에 이 폼 데이터 및 보통 폼에서 데이터를 송신 할 때, 당신은 POST 요청을 사용 할 수 있습니다, 당신은 결국하지 않습니다 단지 있도록 이 크고, 다루기 힘든 URL을. 하지만 당신은 또한 GET 요청을 사용할 수 있습니다, 그리고, 변수 라우팅을 건네 그러나 양식을 위해, 그것은 좋다 여기에 POST 요청에. 그래서 다음, 당신을 좋아 HTML과 PHP로 할 것, 이러한 텍스트 입력을 지정할 수 있습니다, 당신은 그들의 이름을 지정할 수 있습니다, 그것은이 전달되는 이름이다 플라스크 내에서 요청 객체에. 그리고 우리는 제출 한 버튼 포스트는 말했다 그. 그리고 여기, 포스트의 이름입니다 버튼은 블로그 포스트이기 때문에, 그러나 여기, 포스트는 요청 방법이다. 그래서 그것들은 동일한 워드 아르 실제로 관련이없는. 네 파이썬 코드로 돌아가서, 우리는이 방법을 만들라고 할 때, 여기에 주목 당신은 할 수 실제로 경로 내에서 지정 요청 방법 수락 할 것인지, 그래서 여기에, 나는 내가를 지정 단지 포스트 방법을 적용 할 수 있습니다. 그래서, 실제로 페이지를 방문하려고하면 직접, GET 요청을 사용하는, 그것은 "방법은 허용되지 않습니다."나에게 말할 것이다 그래서, 당신은 종류의 같은 페이지가 난 단지 해요이 만드는 페이지, 정말 방법을 같이 사용 양식 제출 얻으려면, 당신은 당신이하지 않도록 지정할 수 있습니다 사람들이 갈 수 있도록하려면 직접 GET 요청을 통해, 또는 당신이 원하는하지 않은 경우, 어떤 이유로, POST 요청, 당신은 여기 GET 지정할 수 있습니다 그러나이 예에서는, 단지 POST 요청 외출하고 싶다. 그래서, create_post가 호출 될 때, 때 우리는 포스트 요청을 통해 것을 방문 당신은 특정에 갈 때마다 노선이 요청 객체가있다, 우리는 수입했다 맨 위에 요청 그러나이 요청 거기 에 전달되는 객체, 당신은 양식 데이터에 액세스 할 수 있습니다, 이는 자동으로 채워 얻을 것이다 당신은 양식에서 요청을 보낼 때. 그리고, 내가 무슨 생각 정말 멋진입니다 양식 객체가 전달 얻을 수 있음을 에, 그냥 파이썬 사전입니다 그렇게 여기 access-- 경우,하자 포함 나 그냥 옆에 표시되는 HTML을 끌어 그래서 당신은 그것을 할 수 있습니다 참조, 예, 그래서 같은 우리가 여기에 지정하는 이름 다른 분야에 대한, 그래서 제목 및 텍스트, 우리 그럼 그냥 여기 사람들을 사용 양식 데이터의 인덱스로. 그래서 매우 편리합니다. 그래서 우리는, post.create를 호출하는 생성하고 자동으로 삽입됩니다 데이터베이스에이 새 게시물의 객체입니다. 그리고이 함수를 만들 생각 여기에 방법에 대한 정말 멋진 예입니다 강력한 플라스크 및이와 함께 일하고있다 당신이 뭔가를하고 있다면 때문에 PHP에서, 당신은해야 할 수도 있습니다 검증을 많이 할, 당신은해야 할 것입니다 데이터베이스 연결을 수립 당신은해야 할 것입니다 SQL 쿼리를 실행, 그러나 여기에서 우리는 단지이 좋은이 post.create, 어떤 우리는 할 수 있습니다 만 정보를 얻을 요청 객체의, 다음 새로 전달 우리가 만드는 것을 게시합니다. 그리고, 맨 마지막 다음 우리가하고 싶은 것은, 리디렉션하는 것입니다 집에 대한 사용자 다시. 그래서 우리는이를 사용 플라스크 기능을 리디렉션합니다. 그리고 뭔가 우리가 보지 못한 그 이전에,이 URL 기능이었다. 그래서 기능에 대한 URL을 할 수 있습니다 실제로 이름을 전달 파이썬 코드의 기능, 오히려 특정 경로보다 그것이이에 있어요. 그래서 난 그냥 쉽게 할 수 슬래시 사용자를 리디렉션, 어느 집에 그것을 다시 보내지 만 것 기능이 좋은 위해 URL을 사용하여, 당신을 변경하는 경우 때문에 물건은 위치, 그래서 내가 변경한다고 가정 해 봅시다 집 대신 / 집에서 할 수 이 여전히 다음 반환 / 가정, 실제로 가서 조회 때문에 함수의 이름, 그것 해당 URL을 다시 제공 할 것입니다. 그래서, 일종의에 당신이있어 가정 여기서 상황을 타개 할 가능성 함수의 이름보다는이다. 당신은 정말이 사용할 수 있습니다 기능에 대한 좋은 URL입니다. 그리고 한 가지 알아야 할 즉, 조금 까다 롭습니다 방금 수 생각입니다 에 대한 URL에 재 호출 실제로 라우트가 모든 텍스트 및 HTML의 어떤 종류의 반환, 그래서 당신은 사실에있다 리디렉션 호출을 반환합니다. 그렇지 않으면, 당신이 뭔가를 얻을 수 있습니다 유효하지 않은 문자열을 반환하지에 대한, 이러한 모든 복귀하기 때문에 HTML은 실제로 렌더링 할. 그래서, 당신은 리디렉션을 호출 할 때, 이 페이지로 리디렉션 하지만 실제로 HTML을 반환 당신은 리디렉션을 실행해야합니다. 다시 홈 페이지로 이동합니다. 그래서 우리는이 두 개의 서로 다른 견해를 가지고있다. 우리는 집에 볼 수 있습니다. 아니면, 내가 템플릿 말을해야 같아요. 우리는이 두 가지 템플릿을 가지고, 집에 서식하는 우리의 모든 게시물을 표시하고, 우리는이 광고 일을 가지고, 이 게시물을 클릭하면, 그것은 간다 플라스크 내의 새로운 노선, 그러나 그 경로는 반드시하지 않습니다 해당 템플릿이있다. 당신은 볼 필요가 없습니다 아무것도,하지만 당신은 여전히​​ 수 이 작품 가고있다 배후에. 그리고 당신은 리디렉션 홈 페이지로 돌아. 그리고 확실히, 그것은 작동하기 쉽습니다 템플릿에 몇 가지 더 멋진 CSS에서 이것은 훨씬 더 좋은 보이게, 하지만 주요 논리의 모든 파이썬에있다. 그 예에 대한 질문? 나는 많은이 알고 여러 가지가있다 진행 우리가 보지 못한 많은 것들을 전에,하지만 아무것도있다. 네. 청중 1 : 당신은 아무것도 할 필요가 마 의 데이터를 스크럽 특수 양식에서 들어오는? 나는 "생성"당신이 방금 말한 발견 에즈라 ZIGMOND : 네, 그래서 그건 실제로, 그것은 정말 좋은 점이다. 질문은 그래서, 당신을 확인하고 있는지 확인해야합니다 데이터가 유효한지 및 세정의 모든 종류의 작업을 수행 이 유효한지 확인하려면, 당신이 여기에서 볼 수 있기 때문에, 나는 그 일을하고 있지 않다. 그럼 어떻게되는지 보자 나는 빈 뭔가를 게시합니다. 그래서, 실제로 단지를 만들거야 빈 게시물 및 날짜 시간을 채우십시오. 그래서 현실에서, 당신은 아마 것 뭔가를하고 싶어, 제목이 동일한 경우는 아마 지정 빈 문자열, 다음이 작업을 수행하지 않습니다. 제목이있는 경우 또는, 단지 그것을 할 빈 문자열과 동일하지. 그래서 실제로 자동으로하지 않습니다 그 세정 돌봐 당신을 위해, 그래서 당신은 여전히​​ 그렇게 할 필요가있다. 그래, 좋은 질문입니다. 청중 2 : 그것을 스크럽을합니까 속편 주입 하시나요? 당신은 알고 계십니까? 에즈라 ZIGMOND : 희망, peewee는 않습니다. 나는 확실히 꽤있을 거라고 생각 나쁜 도서관은 그렇게하지 ​​않은 경우. 나는 정확히 알지 못한다. 나는보고해야 할 것이다 이 생성 된 것을 쿼리합니다. 난에 입력하면, 생각 일종의 보였다 블로그 게시물 SQL 주입 공격과 같은, 이 같은,이 경우 암호 필드 또는 뭔가처럼, 당신이 뭔가를 할 수 있습니다. 나는 여전히 생각 문자 그대로 게시 얻을, 그러나 나는 peewee 할 않는 생각 데이터 스크러빙의 일종 실제로 그것을 실행하기 전에. 청중 1 : 텍스트 필드입니다 바로, 일반 텍스트를 수 있도록 설계? 에즈라 ZIGMOND : 네, 그렇습니다. 네. 그래서 나는 모든 생각, 그래서 이것은이다 올바른 동작, 즉 그렇게 할 것입니다, 하지만 난 그 peewee 생각 희망하지 않는다 자신의 말에 대한 보호의 일종. 그리고 당신이 원한다면 이중 체크, 그이 쿼리를 생성하는 방법이 있습니다. 그래서 당신은 필요 없어 직접 실행합니다. 난을해야 할 것이다 문서를 보면, 하지만 당신은 실제로 볼 수 있습니다 이 생성하는 SQL, 그 살펴보고 및 확인 이 일을 탈출되어 있는지 확인합니다. 또 다른 이유는 왜 수도 SQL보고 싶지 그 peewee는 경우이며, 출력한다 일이 정말 천천히가는 것 같다 당신은 살펴보고 그것이 무엇을 볼 수 있습니다 가끔 때문에 실제로 일 실수로 쉽게 추가 할 수 에, 그런데 당신은 그것을 쓰기, 당신은 실수를 할 수 있습니다 먼저 전체 데이터베이스를 선택, 다음 어떤 종류의 작업을 수행 그에, 때 당신에게 정말 하위 집합을 선택하는 것을 의미했다. 그리고 상황이 아닌 경우입니다 확실히, 바로가는 이 요청에 대해 살펴하는 것이 좋다 이 실제로 발생지고있다. 네. 청중 2 : 처음 시작했을 때, 당신은 5000 포트에 넣어. 에즈라 ZIGMOND : 네. 청중 2 :, peewee와 기본입니다 또는 변경할 수있는 일이 있다는 것입니다? 에즈라 ZIGMOND : 예, 그래서 포트는 플라스크에 기본값입니다. 당신은없이 실행하는 경우 아무것도 지정 그것은 자동으로 할 것입니다. 나는 내가 가진 것, 생각 이를 재확인하고, 하지만 당신은, app.run에 그를 지정할 수 있습니다 난 당신이 뭔가를 할 수 있다고 생각 포트 = 8080. 이제 진짜 빠른 시도해 보겠습니다. 그래, 그래서 당신은 단지를 지정할 수 있습니다 포트 = 8080, 그리고, 거기를 실행합니다 당신이 원한다면 내가 생각하는, 그것을 실행하기 IDE에서, 나는 이것을 시도하지 않은 하지만 난 생각하면 경우 포트 8080에 달렸다 당신은 아마 수있을 것 서버에 액세스하기 위해, 당신이 웹 사이트에 대한했다 좋아한다. 그래,하지만 쉽게 변경 당신 경우 같은 포트 포워딩의 종류가 당신이해야 할 일. 다른 질문? 네? 청중 1 : 그래서, 난에서 본 당신의 당신이 언급 한 바와 같이 모델, 당신을 지정해야 각 개체에 대한 데이터베이스. 당신은 아시나요, 수행 즉, 만약 정말 쉽게 SQLite는 데이터베이스의 제비가 있음 하나의 웹 응용 프로그램에 사용할, 당신은 무리를 지정할 수 있음 모델의 다른 사람? 에즈라 ZIGMOND : 그래, 나를 보자 진짜 빨리 그를 엽니 다. 당신이하려는 경우, 당신은, 말을하는지 다른 무언가의 무리, 아마 일부, 좋아하고 학생들 이유는, 뭐 그런? 그래, 그래서 내가 생각 여전히, 각 모델 아직 단지가해야 할 것 할당 하나의 데이터베이스, 하지만 당신이 원하는 경우가합니다 다른 모델이 다른 데이터베이스 오브젝트는 할당 여기에, 당신은 확실히 그렇게 할 수 있습니다. 그래서 경우에 나는 새를 만들어 이 같은, 이제이 학생은 그 , 이상한 블로그 포스트처럼 보인다 나는 지정할 수 데이터베이스는 여기 db_2과 같다. 그래서, 난 그 생각 당신이 할 수있는 주요 방법. 시원한. 다른 질문? 그래서 조금을 마무리합니다 비트, 여기에 몇 가지 자원이 있고, 이러한 슬라이드는 온라인으로 게시됩니다 그래서 당신은 실제로 이러한 링크를 얻을 수 있습니다. 가장 좋은 자원은 정말 플라스크에 대한 설명서 스스로를 peewee. 그들은 정말 잘 쓰여진하고, 나는 생각한다. 그래서, 플라스크 웹 사이트는 여기이며, 그들은 퀵 스타트 자습서를 가지고 그 비슷한을 통해 안내합니다 내가 통해 걸어 무슨 일, 하지만 당신은 검토의 어떤 종류를 원하는 경우 내가 가서 물건, 또는 당신은 내가 설명하는 생각 혼란스러운 방식으로 뭔가, 그들은 거기에 비슷한 예제를해야합니다. Peewee는 문서를 가지고 있으며, 그들은 퀵 스타트 자습서를 가지고 즉, 주요 매개 변수를 넘어 당신이 사용하고자하는 것이다. 그래서, 일이 나는 약 이야기 고유 및 지정 기본값 필드의 그 종류의 다른 당신은 그 모든이있을 것입니다, 사용할 수 있습니다. 또한, 당신이있는 경우 peewee에 대한 질문, 당신은, 유래에 그들을 게시 실제로 peewee을 만든 사람 계속 때로는 그 대답을 제공합니다. 당신은 잘하면 문제가있는 경우 그는 그것을 대답 할 수있을 것이다 그는 전체를 썼다 때문이다. 나는 그 모든 것을 생각 내가 커버하고 싶었다. 와 주셔서 감사합니다.