Rumah > pembangunan bahagian belakang > Tutorial Python > Pengenalan kepada Flask: Menambah halaman kenalan

Pengenalan kepada Flask: Menambah halaman kenalan

Lisa Kudrow
Lepaskan: 2025-02-28 10:03:11
asal
353 orang telah melayarinya

Dalam artikel sebelumnya dalam siri mini ini, kami menggunakan Flask untuk membina laman web mudah yang mengandungi halaman "rumah" dan "mengenai" menggunakan aliran kerja umum yang boleh kami gunakan untuk aplikasi web berasaskan flask lain. Dalam pelajaran ini, saya akan menunjukkan cara menambah halaman kenalan yang membolehkan pengguna menghantar mesej kepada anda.

Kod yang digunakan dalam artikel ini boleh didapati di GitHub. 


Sambungan Flask

Flask tidak datang dengan banyak ciri dari rak, menjadikannya mudah untuk mengambil dan belajar. Tiada mapper objek-relasi untuk interaksi pangkalan data atau antara muka admin untuk menambah dan mengemas kini kandungan. Ia hanya menawarkan satu set fungsi yang kecil, dua daripadanya telah digunakan -render_template ()

. Pelanjutan Flask adalah pakej yang menambah fungsi khusus ke aplikasi anda. Sebagai contoh, Flask-SQLalChemy menambah sokongan pangkalan data ke aplikasi anda, sedangkan Flask-Login menambah sokongan login/logout. Anda boleh menemui senarai lengkap sambungan dalam pendaftaran lanjutan flask.

Untuk membuat halaman kenalan, kami akan menggunakan flask-wtf untuk mengendalikan dan mengesahkan data bentuk dan flask-mail untuk menghantar data borang kepada anda. Apa maksudnya? Lihat gambar rajah berikut:

Pengguna mengeluarkan permintaan untuk halaman web yang mengandungi borang.


Pengguna mengisi dalam borang. Bidang tidak mengesahkan, laman web yang mengandungi borang beban sekali lagi dengan mesej ralat yang berguna, mendorong pengguna untuk mencuba lagi. Dalam flask, kami akan menyiarkan borang ke fungsi di dalam

routes.py

. Fungsi ini dipanggil pengendali bentuk. Kami akan menjalankan beberapa pemeriksaan pengesahan, dan jika mana -mana input tidak lulus, kami akan menyegarkan halaman untuk memaparkan mesej yang menggambarkan ralat. Sebaik sahaja semua pemeriksaan pengesahan lulus, kami akan menggunakan data borang untuk langkah seterusnya: menghantar e -mel kepada anda, pemilik laman web. Sekarang di mana kita sebenarnya menentukan borang? Kami boleh menulis HTML menggunakan atribut tindakan

ke skrip python. Skrip Python akan mencerminkan borang untuk menangkap setiap medan borang dan mengesahkan data medan borang. Jika kita menggunakan strategi ini, bagaimanapun, kita pada dasarnya akan menentukan borang dua kali untuk bahagian depan dan sekali untuk back-end.

Ia akan menjadi baik untuk menentukan bentuk hanya sekali: dalam skrip Python. Inilah yang membolehkan kami lakukan. Kami akan menentukan borang hanya sekali dalam skrip Python, dan kemudian kami akan membiarkan Flask-WTF menjana HTML borang untuk kami. Titik semua ini adalah untuk memisahkan persembahan dari kandungan.

Cukup perbualan. Mari kod. Kami sudah mempunyai

routes.py

, yang memetakan URL ke fungsi. Janganlah kita berantakan dengan kod yang tidak berkaitan. Sebaliknya, buat fail baru yang dipanggil

forms.py

, dan letakkan di dalam folder

App/
$ cd flaskapp<br>$ . bin/activate<br>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
. Apa yang kita buat? Pertama, kami mengimport beberapa kelas berguna dari flask-wtf contactForm

, yang mewarisi dari & lt; jenis input = "teks" & gt; nama & lt;/input & gt; Skrip. Di dunia yang sempurna, pelayan anda hanya akan memproses borang yang tergolong dalam aplikasi web anda. Dengan kata lain, pelayan anda hanya akan mengendalikan dan mengesahkan borang yang anda buat. Walau bagaimanapun, adalah mungkin untuk penyerang membuat borang di laman web mereka sendiri, mengisi dengan maklumat berniat jahat, dan serahkannya ke pelayan anda. Sekiranya pelayan anda menerima maklumat yang berniat jahat ini, segala macam perkara buruk boleh berlaku seterusnya. Salah satu cara untuk melakukan ini adalah untuk menyimpan token unik yang tersembunyi di dalam HTML /HUBUNGAN

, Fungsi Contact ()
pip install -U Flask-WTF<br>
Salin selepas log masuk
Salin selepas log masuk
, kami mula -mula membuat contoh baru borang hubungan kami dalam baris tiga dan hantar ke template web bernama

contact.html dalam baris empat. Kami akan membuat templat web ini tidak lama lagi. Rajah di atas menunjukkan bahawa jika permintaan GET dihantar ke pelayan, laman web yang mengandungi borang harus diambil dan dimuatkan dalam penyemak imbas. Jika pelayan menerima permintaan pos, fungsi harus menangkap data medan borang dan periksa sama ada ia sah. Dalam istilah Python, logik ini boleh dinyatakan dalam IF ... lain logik ke render_template () dalam artikel sebelumnya, jadi di sini kami mengimport satu lagi kelas flask yang bernama menentukan sama ada kaedah HTTP semasa adalah mendapatkan atau jawatan. Seterusnya ialah Fungsi Kenalan () (baris 9-13).

Rentetan ini adalah pemegang tempat sementara, dan kami akan menggantikannya dengan kod sebenar dalam langkah terakhir artikel ini. Jika tidak, jika permintaan yang digunakan GET, kami mengembalikan templat web contact.html yang mengandungi borang. folder.

app/templates/contact.html blok dengan teksnya sendiri. Kami mula -mula menentukan di mana untuk menghantar data borang pada penyerahan dengan menetapkan atribut tindakan

ke /contact

dipetakan ke hubungan fungsi () , di mana pembolehubah yang dinamakan ContactForm Html

$ cd flaskapp<br>$ . bin/activate<br>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Butang. Tetapi apa yang berlaku jika pengguna tidak mengisi borang dengan betul? Kita perlu mengesahkan input pengguna supaya ia tidak akan menyebabkan masalah dalam langkah -langkah kemudian. Nasib baik, Flask-WTF dilengkapi dengan banyak pengesahan yang berguna, terbina dalam yang boleh kita gunakan dengan segera. Kami akan meletakkan validator ini dalam validator terbina dalam datarequired dari [validators = datarequired ()]

ke setiap medan borang untuk mengesahkan kehadirannya. Perhatikan bahawa pengesahan ini berada di dalam senarai python, yang bermaksud bahawa kami dapat dengan mudah menambah lebih banyak pengesahan ke senarai ini. berikut: yang melakukannya untuk pengesahan borang kami. Mesej ralat ini hanya boleh muncul apabila pengesahan gagal dan hilang apabila kesilapan telah ditetapkan. Flask menjadikan ini sangat mudah dengan menggunakan flash () fungsi pada permulaan skrip.

$ cd flaskapp<br>$ . bin/activate<br>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Selepas borang hubungan pos ke pelayan, sebarang kegagalan pengesahan harus memuatkan semula borang dengan mesej ralat yang berguna. Jika tidak, data input boleh digunakan untuk pemprosesan masa depan. Sekali lagi, logik ini boleh dinyatakan dalam IF ... else logik ke permintaan jika.method == 'pos': blok. Borang mesej ralat yang diposting

, menunjukkan borang telah berjaya diserahkan. Lihat blok berikut:

Fungsi untuk

loop. Tambahkan blok kod ini ke
pip install -U Flask-WTF<br>
Salin selepas log masuk
Salin selepas log masuk
contact.html

selepas & lt; form & gt; tag. cantik.

main.css

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>
Salin selepas log masuk
Buka penyemak imbas anda dan lawati http: // localhost: 5000/kenalan. Tinggalkan semua medan kosong dan klik

hantar untuk menguji sama ada bentuk pengesahan dan mesej ralat berfungsi. Kami telah berjaya menghantar mesej ralat ke borang hubungan kami jika pemeriksaan pengesahan gagal. tetapi kami tidak selesai; Kita sebenarnya boleh melakukan sedikit lebih baik. Daripada mempunyai satu mesej ralat generik untuk semua pemeriksaan pengesahan yang gagal, lebih baik mempunyai mesej ralat tertentu untuk setiap pemeriksaan pengesahan yang gagal. Sebagai contoh, jika pengguna lupa untuk mengisi medan subjek, mesej ralat tertentu yang mengatakan sila masukkan nama anda . Kita boleh mencapai ini dengan mudah, jadi mari kita mulakan dengan menulis mesej ralat khusus kita di dalam setiap pengesahan dalam forms.py

. Seterusnya, mari kita ubah suai

contact.html untuk menerima dan memaparkan mesej ralat khusus ini. Sebelum ini, kami bergantung pada kesilapan fungsi atribut untuk setiap medan borang untuk menarik mesej ralat tertentu dan gelung ke atas mereka menggunakan mesej Jinja2

dan mesej
from flask import Flask, render_template<br>from forms import ContactForm<br>
Salin selepas log masuk
untuk mengarang e -mel baru dan e -mel

17).

Anda mungkin melihat kumpulan menggunakan alamat e -mel kenalan seperti support@example.com . Jika anda memiliki domain anda sendiri dan boleh membuat alamat e -mel kenalan baru, teruskan dan letakkan alamat e -mel itu jika permintaan.method == 'pos': blok sekali lagi. Kami telah menambah logik di dalam form.validate () akan menjadi blok lain. Oleh itu, mari kita teruskan dan tambahkan logik di dalam kelas kelas mengambil baris subjek, alamat "dari", dan alamat "ke". Kami kemudian mengumpul data medan subjek borang hubungan dengan app.config ["mail_username"] , jadi itulah yang kami gunakan di sini untuk alamat dari. E-mel akan dihantar ke alamat e-mel peribadi anda supaya anda dapat menerima dan memberi respons kepada mesej baru. Kami memasukkan nama, e -mel, dan mesej pengguna. Saya menggunakan mail.send operator format python (msg) untuk menghantar e -mel (baris 15).

Mari kita lihat jika semuanya berfungsi. Lawati http: // localhost: 5000/hubungi, isi setiap bidang, dan klik "Hantar." Sekiranya semuanya berjalan lancar, anda akan menerima e -mel baru dari aplikasi Flask anda. contact.html

.

Kami akan meletakkan yang benar

, kami akan memaparkan mesej terima kasih. Jika tidak, kami akan memaparkan borang hubungan. Jika kejayaan %}

bermaksud bahawa jika bendera kejayaan yang kami hantar dari routes.py

ditetapkan ke & lt; p & gt; terima kasih atas mesej anda. Kami akan kembali kepada anda tidak lama lagi. & Lt;/p & gt;
. Jika tidak, ikuti pernyataan jika ... lain

dengan & lt; header & gt; elemen. Mari kita lakukan juga untuk halaman kenalan (baris lapan). Kami menambah halaman kenalan yang mengandungi borang ke aplikasi Flask kami. Borang muncul di beberapa tempat dalam aplikasi web, terutamanya semasa pendaftaran dan log masuk. Aliran kerja ini boleh disesuaikan untuk memenuhi keperluan tersebut. Dalam membuat halaman kenalan, kami belajar bagaimana menggunakan sambungan flask.

Semak pendaftaran lanjutan flask untuk meneroka lebih banyak sambungan yang boleh anda susun ke dalam aplikasi anda.

Atas ialah kandungan terperinci Pengenalan kepada Flask: Menambah halaman kenalan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan