Jadual Kandungan
1. Pembinaan borang HTML
2. Konfigurasi Routing URL
3. Pelaksanaan fungsi pandangan
Nota dan amalan terbaik
Meringkaskan
Rumah hujung hadapan web html tutorial Tutorial menggunakan Django untuk memproses data borang HTML dan pendaftaran pengguna

Tutorial menggunakan Django untuk memproses data borang HTML dan pendaftaran pengguna

Sep 23, 2025 pm 09:03 PM

Tutorial menggunakan Django untuk memproses data borang HTML dan pendaftaran pengguna

Artikel ini memperincikan cara memproses penyerahan borang HTML dalam projek Django, mengekstrak data input pengguna, dan menyimpannya dengan selamat ke pangkalan data, terutama untuk senario pendaftaran pengguna. Kandungan meliputi konfigurasi bentuk HTML, penghalaan URL Django, melihat pelaksanaan fungsi, dan cara menggunakan model pengguna terbina dalam Django untuk penciptaan pengguna dan kata laluan hashing, dan menyediakan cadangan keselamatan dan amalan terbaik.

Dalam pembangunan web, adalah keperluan umum bagi pengguna untuk berinteraksi dengan aplikasi melalui borang HTML. Sebagai kerangka web Python yang kuat, Django menyediakan mekanisme lengkap untuk memproses data bentuk. Tutorial ini akan mengambil pendaftaran pengguna sebagai contoh untuk menerangkan secara terperinci bagaimana untuk mengekstrak data dari borang HTML dan menyimpannya dalam pangkalan data.

1. Pembinaan borang HTML

Pertama, kita memerlukan borang HTML standard untuk mengumpul data pengguna. Dalam projek Django, untuk memastikan keselamatan, semua borang permintaan pos mesti mengandungi token CSRF (pemalsuan permintaan lintas tapak).

 
{ % csrf_token %} { # ini adalah token csrf yang unik untuk django, sangat penting #}

Mata Utama:

  • Kaedah = "Pos": Tentukan data borang yang dikemukakan dalam kaedah pos.
  • tindakan = "{ % url 'user-signup' %}": Menentukan URL sasaran untuk penyerahan borang. { % url 'user-signup' %} adalah tag template django yang secara dinamik menjana URL berdasarkan nama yang ditakrifkan dalam urls.py.
  • { % csrf_token %}: Ini adalah mekanisme keselamatan yang disediakan oleh Django untuk mencegah serangan CSRF. Pastikan anda memasukkan tag ini dalam semua borang pos.
  • Atribut Nama: Setiap medan input mesti mempunyai atribut nama. Pandangan Django akan menggunakan atribut nama ini untuk mendapatkan data borang yang sepadan.

2. Konfigurasi Routing URL

Seterusnya, kita perlu menentukan corak URL dalam fail urls.py projek Django, dan memetakan URL sasaran borang yang dikemukakan kepada fungsi paparan yang sepadan.

 # your_app_name/urls.py
dari laluan import django.urls
dari. Import Pandangan

urlpatterns = [
    jalan ("pendaftaran/", views.signupview, name = "user-signup"),
]

Mata Utama:

  • PATH ("pendaftaran/", ...): mentakrifkan bahawa apabila pengguna mengakses/pendaftaran/laluan, ia akan dikendalikan oleh fungsi views.signupview.
  • Name = "User-Signup": Tentukan nama untuk corak URL ini. Nama ini boleh dirujuk menggunakan { % url 'user-signup' %} dalam templat, yang mudah untuk pengurusan dan pengubahsuaian URL.

3. Pelaksanaan fungsi pandangan

Lihat Fungsi adalah logik teras untuk pengendalian borang pengendalian. Ia akan menerima data borang, memprosesnya (seperti pengesahan data, simpan ke pangkalan data), dan mengembalikan respons.

 # your_app_name/views.py
dari django.shortcuts import render, redirect
dari django.contrib.auth.Models Pengguna Import
dari Django.Contrib.Auth Login import
Dari Django.Contrib Import Mesej # Pilihan: Digunakan untuk memaparkan Message Def SignupView (permintaan, *args, ** kwargs):
    jika permintaan.method == "pos":
        # 1. Ekstrak Data dari Nama Pengguna Permintaan Pos = Request.Post.get ("Nama Pengguna")
        email_address = request.post.get ("e -melAdress") # Perhatikan bahawa ia konsisten dengan atribut nama dalam kata laluan html = request.post.get ("kata laluan")
        password_confirm = request.post.get ("passwordCon")
        Phone_number = request.post.get ("Phone") # Field pilihan # 2. Pengesahan Data Asas (ini hanya contoh mudah, ia harus lebih lengkap dalam projek sebenar)
        jika tidak (nama pengguna dan e -mel_address dan kata laluan dan kata laluan_confirm):
            Mesej.error (Permintaan, "Sila isi semua bidang yang diperlukan.")
            Pulangan render (permintaan, "signuppage.html")

        jika kata laluan! = password_confirm:
            Mesej.error (Permintaan, "Kata laluan yang dimasukkan dua kali tidak konsisten.")
            Pulangan render (permintaan, "signuppage.html")

        jika user.Objects.Filter (username = username) .seksimasi ():
            Mesej.error (Permintaan, "Nama pengguna ini telah didaftarkan.")
            Pulangan render (permintaan, "signuppage.html")

        jika user.objects.filter (email = email_address) .seksimasi ():
            Mesej.error (Permintaan, "E -mel ini telah didaftarkan.")
            Pulangan render (permintaan, "signuppage.html")

        Cuba:
            |
            # Sekiranya terdapat bidang lain, anda boleh menetapkannya di sini, sebagai contoh:
            # user.first_name = "..."
            # user.last_name = "..."
            # user.profile.phone_number = Phone_Number # Katakan model userProfile dikaitkan dengan user.save ()

            # 4. Secara automatik log masuk ke log masuk pengguna yang baru berdaftar (permintaan, pengguna)

            # 5. Redirect ke halaman Kejayaan Return Redirect ("HomePage") # Katakan terdapat URL yang disebut 'HomePage'
        Kecuali pengecualian sebagai e:
            Mesej.error (permintaan, f "Daftar gagal: {e}")
            Pulangan render (permintaan, "signuppage.html")

    lain:
        # Jika ia adalah permintaan GET, menjadikan halaman borang pendaftaran pulangan diberikan (permintaan, "signuppage.html")

Mata Utama:

  • jika request.method == "pos" :: Menentukan sama ada kaedah permintaan adalah pos. Hanya permintaan pos mengandungi data yang dikemukakan oleh borang.
  • request.post.get ("FieldName"): Ini adalah cara untuk mendapatkan data borang dari permintaan pos. "FieldName" sepadan dengan nilai atribut nama tag input dalam borang HTML. Menggunakan kaedah .get () adalah lebih selamat daripada permintaan langsung.Post ["FieldName"] kerana ia tidak mengembalikan apabila kunci tidak wujud dan bukannya membuang keyeRror.
  • dari django.contrib.auth.Models Pengguna Import: Import Model Pengguna Terbina Django.
  • User.objects.create_user (username = username, e -mel = email_address, kata laluan = kata laluan): Ini adalah cara yang disyorkan untuk membuat pengguna baru. Ia secara automatik memproses hash (penyulitan) kata laluan, memastikan kata laluan tidak disimpan dalam pangkalan data dalam plaintext, sangat meningkatkan keselamatan.
  • user.save (): Simpan objek pengguna yang baru dibuat ke pangkalan data.
  • Log masuk (permintaan, pengguna): Selepas pengguna berjaya didaftarkan, anda boleh log masuk ke sistem dengan segera untuk meningkatkan pengalaman pengguna.
  • Redirect ("HomePage"): Selepas permintaan pos yang berjaya diproses, amalan terbaik adalah untuk mengarahkan ke halaman lain (biasanya papan pemuka pengguna atau laman utama) untuk mengelakkan pengguna daripada menyegarkan halaman dan menyebabkan borang diserahkan berulang kali.
  • render (permintaan, "signuppage.html"): untuk mendapatkan permintaan, menjadikan templat yang mengandungi borang pendaftaran. Apabila pemprosesan permintaan pos gagal, ia juga dikembalikan ke halaman pendaftaran, yang biasanya membawa mesej ralat.
  • Pengesahan data dan pengendalian ralat : Dalam aplikasi praktikal, pengesahan data adalah langkah penting. Kod di atas menambah pemeriksaan asas yang tidak kosong, pemeriksaan konsistensi kata laluan, dan pemeriksaan kebolehulangan nama pengguna/e-mel. Pengesahan yang lebih kompleks (seperti format peti mel, kekuatan kata laluan, dan lain -lain) biasanya dikendalikan menggunakan bentuk Django, yang menyediakan mekanisme pengesahan yang lebih berstruktur dan boleh diguna semula. Rangka kerja mesej boleh digunakan untuk memaparkan maklum balas yang mesra kepada pengguna.

Nota dan amalan terbaik

  1. Keselamatan adalah pertimbangan utama:
    • CSRF Token: Sentiasa gunakan { % csrf_token %} dalam bentuk pos.
    • Hash Kata Laluan: Jangan sekali -kali menyimpan kata laluan dalam teks biasa. Gunakan user.objects.create_user () atau user.set_password () untuk secara automatik hash kata laluan.
    • Pengesahan Data: Sahksahkan semua input pengguna di sisi pelayan untuk mengelakkan suntikan data yang berniat jahat dan kemalangan aplikasi.
  2. Gunakan atribut nama untuk mendapatkan data: Django mengiktiraf medan borang melalui atribut nama elemen HTML, bukan atribut ID.
  3. Mod Post-Redirect-GET: Selepas berjaya memproses permintaan pos, pastikan anda menggunakan redirect () untuk pengalihan semula. Ini menghalang penyerahan borang berulang apabila pengguna menyegarkan halaman dan mengelakkan amaran penyemak imbas untuk "membentuk penyerahan berulang".
  4. Pengendalian ralat dan maklum balas pengguna: Sangat penting untuk memberikan maklum balas pengguna yang jelas. Apabila penyerahan borang gagal, pengguna harus dipaparkan dengan mesej ralat tertentu dan dibenarkan untuk membetulkannya. Rangka kerja mesej Django adalah pilihan yang hebat.
  5. Bentuk Django: Untuk bentuk yang lebih kompleks dan keperluan pengesahan data yang lebih ketat, sangat disyorkan untuk menggunakan modul modul bentuk Django. Ia menyediakan rangka kerja yang kuat dan fleksibel untuk menentukan struktur bentuk, melakukan pengesahan, membuat bidang bentuk, dan mengendalikan kesilapan. Walaupun tutorial ini menggunakan cara langsung permintaan.post.get (), bentuk Django adalah pilihan yang lebih profesional dan cekap dalam persekitaran pengeluaran.
  6. Model pengguna tersuai: Jika model pengguna terbina dalam tidak dapat memenuhi keperluan, anda boleh membuat model pengguna tersuai. Tetapi ambil perhatian bahawa ini melibatkan konfigurasi dan migrasi yang lebih kompleks.

Meringkaskan

Melalui tutorial ini, kami belajar bagaimana membina borang HTML dalam Django, mengkonfigurasi penghalaan URL, dan tulis fungsi Lihat untuk mengendalikan penyerahan borang. Proses teras termasuk: menambah csrf_token dan atribut nama dalam HTML, menentukan corak URL dalam urls.py, dan menggunakan request.method == "pos" untuk menentukan jenis permintaan dalam views.py, mengekstrak data melalui request.post.get (), dan menggunakan Django's terbina dalam model pengguna terbina dalam Berikutan langkah -langkah dan amalan terbaik ini, pendaftaran pengguna dan fungsi pemprosesan data lain boleh dilaksanakan dengan berkesan dalam aplikasi Django.

Atas ialah kandungan terperinci Tutorial menggunakan Django untuk memproses data borang HTML dan pendaftaran pengguna. 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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Petua CSS: Tepat menyembunyikan kandungan teks tertentu tanpa menjejaskan elemen ibu bapa Petua CSS: Tepat menyembunyikan kandungan teks tertentu tanpa menjejaskan elemen ibu bapa Sep 16, 2025 pm 10:54 PM

Tutorial ini memperincikan cara menggunakan CSS untuk menyembunyikan kandungan teks tertentu dengan tepat di halaman HTML untuk mengelakkan masalah seluruh elemen induk yang tersembunyi kerana pemilih yang tidak betul. Dengan menambah kelas CSS eksklusif ke elemen pembalut teks sasaran dan menggunakan paparan: tiada; Atribut, pemaju boleh mencapai kawalan halus elemen halaman, memastikan bahawa hanya bahagian yang diperlukan tersembunyi, dengan itu mengoptimumkan susun atur halaman dan pengalaman pengguna.

Bagaimana untuk membuat hiperpautan ke alamat e -mel di HTML? Bagaimana untuk membuat hiperpautan ke alamat e -mel di HTML? Sep 16, 2025 am 02:24 AM

Usemailto: inhreftocreateemailinks.startwithforbasiclinks, tambah? Subjek = dan & body = forpre-filledContent, andincludemultipleaddressorcc =, bcc = foradvancedOptions.

Tangkap peristiwa mousedown dengan elemen induk yang mengandungi iframes silang domain: prinsip dan batasan Tangkap peristiwa mousedown dengan elemen induk yang mengandungi iframes silang domain: prinsip dan batasan Sep 20, 2025 pm 11:00 PM

Artikel ini meneroka cabaran menangkap peristiwa mousedown pada div ibu bapa yang mengandungi iframes domain. Masalah teras ialah dasar keselamatan pelayar (dasar asal usul) menghalang acara langsung DOM mendengar kandungan iframe silang domain. Jenis penangkapan acara ini tidak dapat dicapai melainkan nama domain sumber iframe dikawal dan CORS dikonfigurasi. Artikel ini akan menerangkan mekanisme keselamatan secara terperinci dan batasan mereka mengenai interaksi peristiwa dan memberikan alternatif yang mungkin.

Fungsi luaran JavaScript Panggilan Kesukaran Analisis: Lokasi skrip dan penamaan spesifikasi Fungsi luaran JavaScript Panggilan Kesukaran Analisis: Lokasi skrip dan penamaan spesifikasi Sep 20, 2025 pm 10:09 PM

Artikel ini meneroka dua masalah biasa apabila memanggil fungsi JavaScript luaran dalam HTML: masa pemuatan skrip yang tidak betul menyebabkan unsur-unsur DOM menjadi tidak siap, dan penamaan fungsi mungkin bertentangan dengan peristiwa terbina dalam pelayar atau kata kunci. Artikel ini menyediakan penyelesaian terperinci, termasuk lokasi rujukan skrip tweaking dan mengikuti spesifikasi penamaan fungsi yang baik untuk memastikan kod JavaScript dilaksanakan dengan betul.

Bagaimana untuk menambah tooltip pada hover dalam html? Bagaimana untuk menambah tooltip pada hover dalam html? Sep 18, 2025 am 01:16 AM

USetetetitLeatTrBITrBITpetoLToolCUStOM-STyLElyLEtoMSORCUStOM.1.addtitle = "Text" toanyeLementFordefaLtTipips.2.forStyLEdToolTips, wrapTheelememementinAcontainer, uss.toolTipand.tool

Bagaimana membuat teks membungkus imej dalam html? Bagaimana membuat teks membungkus imej dalam html? Sep 21, 2025 am 04:02 AM

USECSSSFLOOPROPERTYTOWRAPTEXTAROUNIMAGE: FloatLeftFortExtOntHeright, FloatRightFortExtOnTheLeft, AddMarginforspacing, andClearFloatStOpreventLayOuteSues.

Cara menetapkan atribut lang dalam html Cara menetapkan atribut lang dalam html Sep 21, 2025 am 02:34 AM

Setthelangattributeinthehtmltagtospecifypagelanguage, mis., Forenglish;

Melaksanakan Stacking Unsur Vertikal dalam Layout Bootstrap Flexbox: Dari sisi ke Lapisan Melaksanakan Stacking Unsur Vertikal dalam Layout Bootstrap Flexbox: Dari sisi ke Lapisan Sep 21, 2025 pm 10:42 PM

Apabila menggunakan bootstrap untuk susun atur laman web, pemaju sering menghadapi masalah elemen yang dipaparkan bersebelahan dan bukannya disusun secara vertikal secara lalai, terutamanya apabila bekas induk menggunakan susun atur Flexbox. Artikel ini akan meneroka cabaran susun atur yang sama dengan mendalam dan memberikan penyelesaian: dengan menyesuaikan atribut flex-arah dari bekas flex ke lajur, menggunakan kelas alat Flex-Column Bootstrap untuk mencapai susunan menegak yang betul dari tag H1 dan blok kandungan seperti bentuk, memastikan struktur halaman memenuhi jangkaan.

See all articles