목차
사용자는 양식을 포함하는 웹 페이지에 대한 요청을 발행합니다.
요소를 사용하여 if ... else
백엔드 개발 파이썬 튜토리얼 플라스크에 소개 : 연락처 페이지 추가

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

Feb 28, 2025 am 10:03 AM

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

이 기사에 사용 된 코드는 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으로 문의하세요.

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    Video Face Swap

    Video Face Swap

    완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

    중국어 버전, 사용하기 매우 쉽습니다.

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

    신 수준의 코드 편집 소프트웨어(SublimeText3)

    Python vs. C : 응용 및 사용 사례가 비교되었습니다 Python vs. C : 응용 및 사용 사례가 비교되었습니다 Apr 12, 2025 am 12:01 AM

    Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

    2 시간의 파이썬 계획 : 현실적인 접근 2 시간의 파이썬 계획 : 현실적인 접근 Apr 11, 2025 am 12:04 AM

    2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

    파이썬 : 게임, Guis 등 파이썬 : 게임, Guis 등 Apr 13, 2025 am 12:14 AM

    Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

    Python vs. C : 학습 곡선 및 사용 편의성 Python vs. C : 학습 곡선 및 사용 편의성 Apr 19, 2025 am 12:20 AM

    Python은 배우고 사용하기 쉽고 C는 더 강력하지만 복잡합니다. 1. Python Syntax는 간결하며 초보자에게 적합합니다. 동적 타이핑 및 자동 메모리 관리를 사용하면 사용하기 쉽지만 런타임 오류가 발생할 수 있습니다. 2.C는 고성능 응용 프로그램에 적합한 저수준 제어 및 고급 기능을 제공하지만 학습 임계 값이 높고 수동 메모리 및 유형 안전 관리가 필요합니다.

    2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까? 2 시간 안에 얼마나 많은 파이썬을 배울 수 있습니까? Apr 09, 2025 pm 04:33 PM

    2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

    파이썬과 시간 : 공부 시간을 최대한 활용 파이썬과 시간 : 공부 시간을 최대한 활용 Apr 14, 2025 am 12:02 AM

    제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

    파이썬 : 기본 응용 프로그램 탐색 파이썬 : 기본 응용 프로그램 탐색 Apr 10, 2025 am 09:41 AM

    Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 ​​같은 작업에 적합합니다.

    파이썬 : 자동화, 스크립팅 및 작업 관리 파이썬 : 자동화, 스크립팅 및 작업 관리 Apr 16, 2025 am 12:14 AM

    파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

    See all articles