


Pengenalan kepada Flask: Menambah halaman kenalan
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.
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 tindakanke 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>
, 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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Fastapi ...

Menggunakan Python di Terminal Linux ...

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Mengenai Pythonasyncio ...

Memahami Strategi Anti-Crawling of Investing.com Ramai orang sering cuba merangkak data berita dari Investing.com (https://cn.investing.com/news/latest-news) ...

Memuatkan Fail Pickle di Python 3.6 Kesalahan Alam Sekitar: ModulenotFoundError: Nomodulenamed ...

Perbincangan mengenai sebab -sebab mengapa fail saluran paip tidak dapat ditulis apabila menggunakan crawler scapy apabila belajar dan menggunakan crawler scapy untuk penyimpanan data yang berterusan, anda mungkin menghadapi fail saluran paip ...
