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.
. 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.
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, dan letakkan di dalam folder
App/$ cd flaskapp<br>$ . bin/activate<br>
, 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>
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 dipetakan ke hubungan fungsi () , di mana pembolehubah yang dinamakan ContactForm 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. 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 Fungsi untuk selepas & lt; form & gt; tag. cantik. main.css 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. 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 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 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 bermaksud bahawa jika bendera kejayaan yang kami hantar dari routes.py 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. blok dengan teksnya sendiri. Kami mula -mula menentukan di mana untuk menghantar data borang pada penyerahan dengan menetapkan atribut tindakan $ cd flaskapp<br>$ . bin/activate<br>
$ cd flaskapp<br>$ . bin/activate<br>
pip install -U Flask-WTF<br>
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>
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 from flask import Flask, render_template<br>from forms import ContactForm<br>
Kami akan meletakkan yang benar
, kami akan memaparkan mesej terima kasih. Jika tidak, kami akan memaparkan borang hubungan. Jika kejayaan %} . Jika tidak, ikuti pernyataan jika ... lain
Atas ialah kandungan terperinci Pengenalan kepada Flask: Menambah halaman kenalan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!