>백엔드 개발 >파이썬 튜토리얼 >플라스크에 소개 : 연락처 페이지 추가

플라스크에 소개 : 연락처 페이지 추가

Lisa Kudrow
Lisa Kudrow원래의
2025-02-28 10:03:11364검색

이 미니 시리즈의 이전 기사에서 플라스크를 사용하여 다른 플라스크 기반 웹 앱에 적용 할 수있는 일반화 된 워크 플로우를 사용하여 "홈"및 "정보"페이지가 포함 된 간단한 웹 사이트를 만들었습니다. 이 레슨에서는 사용자가 메시지를 보낼 수있는 연락처 페이지를 추가하는 방법을 보여줍니다.

이 기사에 사용 된 코드는 Github에서 찾을 수 있습니다. 

플라스크 확장

플라스크에는 선반에서 많은 기능이 포함되어 있지 않으므로 쉽게 픽업하고 배울 수 있습니다. 데이터베이스 상호 작용 또는 컨텐츠를 추가하고 업데이트 할 관리 인터페이스에는 객체 관계 맵퍼가 없습니다. 우리가 이미 사용한 두 가지 기능 세트 만 제공합니다. 플라스크 확장자는 앱에 특정 기능을 추가하는 패키지입니다. 예를 들어 Flask-Sqlalchemy는 앱에 데이터베이스 지원을 추가하는 반면 Flask-Login은 로그인/로그 아웃 지원을 추가합니다. Flask Extension Registry에서 전체 확장 목록을 찾을 수 있습니다.

연락처 페이지를 만들려면 Flask-WTF를 사용하여 양식 데이터 및 플라스크 메일을 처리하고 검증하여 양식 데이터를 이메일로 전자 메일로 전자 메일을 보내십시오. Flask-WTF Flask-WTF가 데이터를 핸들링하고 유효한 데이터를 유효하게하는 FLASK-WTF. 그게 무슨 뜻입니까? 다음 다이어그램을 살펴 봅니다.

사용자는 양식을 포함하는 웹 페이지에 대한 요청을 발행합니다.

사용자는 양식을 채우게됩니다.

사용자는 버튼을 클릭하여 게시물 요청을 통해 서버를 보내십시오. 필드는 유효한 오류 메시지와 함께 양식을 포함하는 웹 페이지를 검증하지 않으며, 사용자에게 다시 시도하도록하려면 양식을 다시로드합니다.

모든 필드가 검증되면 형식 정보는 파이프 라인의 다음 단계에서 사용됩니다. 연락처 페이지에는 사용자 이름, 이메일 및 메시지에 대한 필드가 있습니다. 플라스크에서는 양식을 lours.py

내부에 함수에 게시합니다. 이 기능을 양식 처리기라고합니다. 몇 가지 유효성 검사 검사를 실행할 것이며 입력 중 하나가 소송을 전달하지 않으면 페이지를 새로 고침하여 오류를 설명하는 메시지를 표시합니다. 모든 유효성 검사 점검이 통과되면 다음 단계에 양식 데이터를 사용하여 웹 사이트 소유자에게 메시지를 이메일로 보내십시오.

이것이 양식 처리 및 유효성 검사 작업입니다. 이제 우리는 실제로 양식을 어디에서 정의합니까? 우리는 action
속성을 ​​Python 스크립트에 사용하여 HTML을 쓸 수 있습니다. 파이썬 스크립트는 각 양식 필드를 캡처하고 양식 필드 데이터를 검증하기 위해 양식을 반영합니다. 그러나이 전략을 사용한다면 본질적으로 양식을 두 번 정의합니다. 프론트 엔드의 경우, 백엔드의 경우 한 번. 파이썬 스크립트에서 양식을 한 번만 정의하는 것이 좋습니다. 이것이 바로 Flask-WTF가 우리가 할 수있는 일입니다. 우리는 파이썬 스크립트에서 양식을 한 번만 정의한 다음 Flask-WTF가 우리를 위해 양식의 HTML을 생성하도록 할 것입니다. 이 모든 것의 요점은 내용과 프레젠테이션을 분리하는 것입니다.

형식

첫 번째 단계로서 첫 번째 단계로, 우리가 마지막으로 만든 고립 된 개발 환경으로 돌아가 봅시다.

이제 우리는 개발 환경을 입력하고 활성화 했으므로 flask-wtf를 입력하고 활성화 했으므로 이제 우리는 파악한 스크립트에 양식을 정의 할 수 있습니다. 우리는 이미 를 가지고 있으며 URL을 함수에 매핑합니다. 관련없는 코드로 혼란하지 말자. 대신, 에서 몇 가지 유용한 클래스를 가져 왔으며, & lt; input type = "text"& gt; name & lt;/input & gt;

에서 상속하는 경우, html 파일에서 import forms 에서 작성합니다. 스크립트.

$ cd flaskapp<br>$ . bin/activate<br>

app/lours.py

pip install -U Flask-WTF<br>

다음으로, 플라스크 -wtf를 구성하여 크로스 사이트 요청 위조 (CSRF)로 알려진 보안 익스플로잇을 처리합니다. 완벽한 세상에서 서버는 웹 앱에 속하는 양식 만 처리합니다. 다시 말해, 서버는 생성 한 양식 만 처리하고 검증합니다. 그러나 공격자가 자신의 웹 사이트에서 양식을 작성하고 악의적 인 정보로 작성하여 서버에 제출할 수 있습니다. 서버 가이 악의적 인 정보를 수락하는 경우 다음에 모든 종류의 나쁜 일이 발생할 수 있습니다. 양식 제출이 웹 앱에서 시작되도록 CSRF 공격을 방지 할 수 있습니다. 이를 수행하는 한 가지 방법은 HTML /Contact , 기능 contact () 에 고유 한 토큰을 숨기고 먼저 3 행에서 연락처 양식의 새 인스턴스를 생성하여 contact.html 라는 웹 템플릿으로 보내는 것입니다. 우리는이 웹 템플릿을 곧 만들 것입니다.

우리는 여전히 여기서해야 할 일이 있습니다. 위의 다이어그램은 GET 요청이 서버로 전송되면 양식을 포함하는 웹 페이지를 브라우저에서 검색하고로드해야 함을 보여주었습니다. 서버가 게시물 요청을 수신하는 경우 함수는 양식 필드 데이터를 캡처하고 유효한 지 확인해야합니다. 파이썬 용어로,이 논리는 if ... else ... else

로직으로 표현 될 수 있으며, 이전 기사에서 render_template () 는 현재 HTTP 메소드가 GET인지 게시물인지 확인합니다. 다음은 contact () function (lines 9-13)입니다. 사후 요청의 경우 양식이 게시되었음을 나타내는 문자열이 반환됩니다.이 문자열은 임시 자리 표시 자이며,이 기사의 마지막 단계에서 실제 코드로 교체하겠습니다. 그렇지 않으면, 요청이 get을 사용하는 경우, 우리는 양식을 포함하는 웹 템플릿 contact.html

를 반환합니다. 다음 단계는 웹 템플릿 contact.html

를 생성하고

템플릿/ 내에 넣는 것입니다. 폴더. app/emplates/contact.html

as 및 와 함께,

contact.html $ cd flaskapp<br>$ . bin/activate<br> with with layout.html. 자체 텍스트. 먼저 /contact 에 대한 속성을 ​​설정하여 제출시 양식 데이터를 보내는 위치를 지정합니다. html. 렌더링 된 html은 . 버튼. 후 요청은 , 여기서 URL contact () . 그러나 사용자가 양식을 제대로 작성하지 않으면 어떻게됩니까? 이후 단계에서 문제를 일으키지 않도록 사용자 입력을 검증해야합니다. 양식 유효성 검사는 Form Validator를 사용하여 수행됩니다. 다행히도 Flask-WTF에는 바로 사용할 수있는 유용하고 내장 된 유효성 검사기가 많이 제공됩니다. 우리는이 유효성 검사를 [validators = datarequired ()] 에서 각 양식 필드로 내장 유효성 검사기에 넣습니다. 이 유효성 검사기는 Python 목록 내부에 있습니다. 즉,이 목록에 더 많은 유효성 검사기를 쉽게 추가 할 수 있음을 의미합니다. 다음에, 다음, Pattern email () 동시에 이메일 주소를 필요로하겠습니다. 다음 : 는 양식 검증을 위해 수행합니다. 깜박임 오류 메시지 원래 다이어그램을 되돌아 보면, 유효성 검사가 실패하면 오류 메시지로 다시로드해야합니다. 따라서 사용자가 실수를 수정하고 다시 시도 할 수 있습니다. 이 오류 메시지는 유효성 검사가 실패 할 때만 나타나야하고 실수가 수정되었을 때만 나타나야합니다.
  • 다음 단계는 유효성 검사가 실패 할 때 이러한 종류의 임시 오류 메시지를 사용자에게 보내는 것입니다. 플라스크는 스크립트의 시작 부분에서 Flash () 함수를 사용하여이를 쉽게 만듭니다.
  • app/lours.py .연락처가 서버에 게시 된 후에 게시 된 후 유효성 검사 실패는 유용한 오류 메시지로 양식을 다시로드해야합니다. 그렇지 않으면 입력 데이터를 향후 처리에 사용할 수 있습니다. 다시 한 번,이 논리는 if ... else
    $ cd flaskapp<br>$ . bin/activate<br>
    로직으로 표현 될 수 있습니다. If request.method == 'post': 블록.

    app/lours.py

    검증 점검이 실패하면, false . 양식이 성공적으로 제출되었음을 나타내는 오류 메시지 양식이 게시되었습니다. 다음, 다음에 이러한 임시 오류 메시지를 수신하고 표시 할 수 있도록

    pip install -U Flask-WTF<br>
    contact.html 를 수정합시다. 다음 블록을 참조하십시오. 루프의 함수. 이 코드 블록을 contact.html 후에 & lt; form & gt;

    tag.

    app/templates/contact.html.html.html.html.html

    from flask_wtf import FlaskForm<br>from wtforms import StringField, TextAreaField, SubmitField<br><br><br><br>class ContactForm(FlaskForm):<br>  name = StringField("Name")<br>  email = StringField("Email")<br>  subject = StringField("Subject")<br>  message = TextAreaField("Message")<br>  submit = SubmitField("Send") <br>

    에 추가하십시오. 마지막으로, main.css

    브라우저를 열고 http : // localhost : 5000/contact를 방문하십시오. 모든 필드를 비워두고 를 보내 를 보내려면 양식 검증 및 오류 메시지 플래시 작업 여부를 테스트하십시오. 유효성 검사가 실패하면 연락처 양식에 오류 메시지를 성공적으로 보냈습니다.

    그러나 우리는 완료되지 않았습니다. 우리는 실제로 조금 더 잘할 수 있습니다. 실패한 모든 유효성 검사 검사에 대해 하나의 일반적인 오류 메시지가있는 대신, 실패한 유효성 검사 검사에 대한 특정 오류 메시지를 갖는 것이 좋습니다. 예를 들어, 사용자가 주제 필드를 채우는 것을 잊어 버린 경우, 이름 를 입력하십시오. 우리는 이것을 쉽게 달성 할 수 있으므로 각 유효성 검사기 내부에
    from flask import Flask, render_template<br>from forms import ContactForm<br>
    형태 . 다음으로 contact.html

    를 수정하여 이러한 특정 오류 메시지를 수신하고 표시하겠습니다. 앞서, 우리는 각 양식 필드에 대한 기능 오류 속성에 의존하여 특정 오류 메시지를 끌어 내고 Jinja2 메시지 및 메시지를 사용하여 새로운 이메일과 메일

    변수를 작성하여 app.config [ "mail_username"] 를 포함하는 Mail 변수를 사용하여 클래스를 사용하여 루프를 사용했습니다. 17). 당신은 아마도 그룹이 support@example.com과 같은 연락처 이메일 주소를 사용하는 것을 보았을 것입니다. 자신의 도메인을 소유하고 새로운 연락처 전자 메일 주소를 만들 수있는 경우 계속해서 해당 이메일 주소를 request.method == 'post'에 넣으십시오. 우리는 이미 form.validate () 내에 논리를 추가했습니다. 따라서 메시지 클래스 내부에서 논리를 추가하여 제목 줄, "From"주소 및 "To"주소를 가져 갑시다. 그런 다음 연락처 양식의 주제 필드 데이터를 app.config [ "mail_username"] 로 수집하므로 여기에서 From 주소에 사용한 것입니다. 이메일은 귀하가 새 메시지를 받고 응답 할 수 있도록 개인 이메일 주소로 전송됩니다.

    다음으로, 우리는 이메일 자체를 작성합니다 (11-14 행). 사용자 이름, 이메일 및 메시지가 포함됩니다. Python의 문자열 서식 연산자 Mail.Send (MSG) 를 사용하여 이메일을 보내기 (15 행). http : // localhost : 5000/contact를 방문하고 각 필드를 채우고 "보내기"를 클릭하십시오. 모든 것이 잘 진행되면 플라스크 앱에서 새 이메일을받을 수 있습니다. 정시도 우리의 두 번째 단계는 임시 자리 표시 자 문자열을 제거하는 것입니다 ... else 문.

    연락 양식이 성공적으로 제출되면 contact.html . 그렇지 않으면 연락처 양식이 표시됩니다. 에서 시작하겠습니다. %}

    lours.py에서 보낸 성공 플래그가 & lt; p & gt; 메시지에 감사드립니다. 우리는 곧 당신에게 다시 연락 할 것입니다. & lt;/p & gt;

    . 그렇지 않으면, & lt; header & gt;

    요소를 사용하여 if ... else

    문을 따르십시오. 연락처 페이지 (8 행)에 대해서도 그렇게합시다. apt/templates/layout.html .html 브라우저를 열고 http : // recomphent http : // 새로 추가 된 탐색 링크를 보려면

    . 플라스크 앱에 양식이 포함 된 연락처 페이지를 추가했습니다. 양식은 웹 애플리케이션의 여러 장소, 특히 가입 및 로그인 중에 나타납니다. 이 워크 플로는 이러한 요구를 충족시키기 위해 조정할 수 있습니다. 연락처 페이지를 작성할 때 플라스크 확장을 사용하는 방법을 배웠습니다. 플라스크 확장은 플라스크 기반 앱의 기능을 확장하는 간단하고 강력한 도구입니다. 플라스크 확장 레지스트리를 확인하여 앱에 통합 할 수있는 더 많은 확장 기능을 탐색하십시오.

    위 내용은 플라스크에 소개 : 연락처 페이지 추가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.