ไขปริศนาเวทย์มนตร์ของจังโก้
เผยแพร่แล้ว: 2022-03-10ตามเอกสารอย่างเป็นทางการ
Django เป็นเฟรมเวิร์กเว็บ Python ระดับสูงที่ส่งเสริมการพัฒนาอย่างรวดเร็วและการออกแบบที่สะอาดและใช้งานได้จริง สร้างขึ้นโดยนักพัฒนาที่มีประสบการณ์ โดยจะดูแลปัญหาส่วนใหญ่ในการพัฒนาเว็บไซต์ คุณจึงสามารถมุ่งความสนใจไปที่การเขียนแอปของคุณได้โดยไม่ต้องสร้างวงล้อใหม่ ได้ฟรีและโอเพ่นซอร์ส
— DjangoProject.com
มันเป็นหนึ่งในเฟรมเวิร์กยอดนิยมของ Python สำหรับการสร้างเว็บแอปพลิเคชันและเป็นที่นิยมมากที่สุดสำหรับความสามารถในการปรับขนาดในการสร้างสำเร็จรูปพร้อมการกำหนดค่าและไฟล์ที่วางลง นี่เป็นการสรุปเป้าหมายทั้งหมดของ Django สำหรับนักพัฒนา
“...สร้างแอปพลิเคชันที่ยอดเยี่ยมในเวลาอันสั้นและไม่ต้องกังวลกับการตั้งค่าพื้นฐาน”
มีการกำหนดค่าพื้นฐาน ไฟล์ และสไตล์ที่ตัดผ่านเว็บแอปพลิเคชันทั้งหมด ไม่ว่าคุณจะสร้างอะไร เมื่อใช้ Django คำสั่งเหล่านี้จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อคุณเรียกใช้คำสั่งบางคำสั่ง ณ จุดต่างๆ ในรอบการพัฒนาของแอปพลิเคชันของคุณ ด้วยวิธีนี้ คุณจะมีเวลามากพอที่จะมุ่งเน้นไปที่ส่วนสำคัญของการพัฒนาแอปพลิเคชันของคุณ ในขณะที่ Django จะจัดการส่วนอื่นๆ ให้กับคุณ
หมายความว่ามีหลายสิ่งที่เกิดขึ้นภายใต้ประทุน สำหรับผู้ที่ไม่มีความเข้าใจในชิ้นส่วนที่เคลื่อนไหวได้อย่างเต็มที่ สิ่งนี้สามารถครอบงำได้ ในบทความนี้เราจะเรียนรู้เกี่ยวกับสิ่งต่อไปนี้:
- การติดตั้ง Django
- คำสั่ง
startproject
และstartapp
- ไฟล์คอนฟิกูเรชัน Django ซึ่งรวมถึง;
- settings.py
- urls.py
- จัดการ.py
- เค้าโครงโมเดล
- การกำหนดเส้นทาง
เราจะเรียนรู้ว่าสิ่งเหล่านี้เข้ากันได้อย่างไรและมีบทบาทอย่างไร สิ่งสำคัญคือต้องรู้ว่าเป็นไปไม่ได้ที่จะดูทุกสิ่งที่เกิดขึ้นภายใน Django สำหรับกรณีที่อยู่นอกขอบเขตของบทช่วยสอนนี้ จะมีลิงก์เพื่อแนะนำแหล่งข้อมูลที่จะช่วยเหลือคุณ
เราจะสร้างแพลตฟอร์มอีคอมเมิร์ซเพื่อจุดประสงค์ในการเรียนรู้ นี่ไม่ใช่ไซต์อีคอมเมิร์ซเต็มรูปแบบ แอปพลิเคชันของเราจะมีคุณลักษณะพื้นฐานเพียงสองอย่างเท่านั้น การสร้างผลิตภัณฑ์และการสั่งซื้อจากมุมมองของผู้ดูแลระบบ
บทความนี้จะแนะนำคุณเกี่ยวกับการทำความเข้าใจคำสั่ง ไฟล์ และข้อมูลพื้นฐานที่สร้างไว้ล่วงหน้าของ Django มีจุดมุ่งหมายเพื่อนักพัฒนาที่เคยใช้ Django หรือตั้งใจที่จะใช้มันและต้องการทราบว่าจะเกิดอะไรขึ้นภายใต้ประทุน แม้ว่าจะไม่จำเป็นที่คุณต้องเคยใช้ Django แต่การมีประสบการณ์เกี่ยวกับพื้นฐานของ Django ก่อนดำเนินการต่อในบทความนี้จะทำให้คุณได้เปรียบ คุณต้องมีความรู้ในการทำงานของ Python เป็นอย่างดีจึงจะเข้าใจสิ่งที่จะกล่าวถึงในงานชิ้นนี้
การติดตั้ง Django
หากคุณยังไม่ได้ติดตั้ง Django ให้ทำตามขั้นตอนต่อไปนี้
ขั้นแรก สร้างสภาพแวดล้อมเสมือนชื่อ djangodev
คุณต้องการสิ่งนี้เพื่อแยกพื้นที่ทำงาน Django และแพ็คเกจที่เกี่ยวข้อง
python3 -m venv ~/.virtualenvs/djangodev
ตอนนี้เพื่อเข้าสู่สภาพแวดล้อมเสมือนของคุณ คุณต้องเปิดใช้งาน
source ~/.virtualenvs/djangodev/bin/activate
หากคุณได้รับข้อผิดพลาดในการทำงานกับ source
คุณสามารถใช้คำสั่งทางเลือกนี้ได้
. ~/.virtualenvs/djangodev/bin/activate
สำหรับผู้ใช้ Windows ให้ใช้สิ่งนี้แทน
...\> %HOMEPATH%\.virtualenvs\djangodev\Scripts\activate.bat
หมายเหตุ: คุณต้องเปิดใช้งานสภาพแวดล้อมเสมือนทุกครั้งที่คุณต้องการใช้ Django
ตอนนี้คุณอยู่ใน virtual env แล้ว ให้ติดตั้ง Django:
python -m pip install Django
ในการตรวจสอบว่า Django ได้รับการติดตั้งอย่างถูกต้องหรือไม่ ให้รัน;
python -m django --version
ชาบูม! ตอนนี้คุณพร้อมสำหรับเวทมนตร์แล้ว เตรียมไม้กายสิทธิ์ของคุณให้พร้อม!
วิธีการสร้างไฟล์และโฟลเดอร์ในขณะเดินทางอาจง่ายและตรงไปตรงมา อย่างไรก็ตาม มันไม่เหมาะเมื่อคุณต้องสร้างโครงการขนาดกลางหรือขนาดใหญ่และกำหนดเส้นตายที่จะเอาชนะ เรามีกำหนดเวลาเสมอที่จะเอาชนะ แม้กระทั่งสำหรับโครงการส่วนตัว
ทำตามวิธีนี้เมื่อสร้างโปรเจ็กต์ขนาดใหญ่ใหม่ คุณจะต้องสร้างไฟล์และโฟลเดอร์หลายไฟล์ และทำการตั้งค่าหลายรายการ ซึ่งอาจนำไปสู่การสร้างจุดบกพร่องที่หลีกเลี่ยงได้และเสียเวลามาก คำสั่ง startproject
และ startapp
ที่เราสามารถใช้ได้ผ่าน Django มุ่งหวังที่จะแก้ปัญหานี้ คำสั่งทั้งสองนี้สร้างไฟล์ โฟลเดอร์ และดำเนินการกำหนดค่าต่างๆ ให้กับคุณ
เริ่มต้นด้วยการสร้างแอปพลิเคชันใหม่โดยใช้คำสั่ง startproject
นั่งร้านแอพพลิเคชั่น
เราจะสร้างแอปพลิเคชันของเราและดูไฟล์ที่สร้างขึ้น รวมถึงคำสั่งบางส่วนที่เราจะใช้ เรียกใช้คำสั่งนี้ในเทอร์มินัลของคุณเพื่อเริ่มต้น
django-admin startproject ecommerce_site
เมื่อติดตั้ง Django django-admin
จะถูกเพิ่มในพาธของคุณเพื่อให้สามารถเข้าถึงเพื่อดำเนินการได้ เป็นยูทิลิตี้บรรทัดคำสั่งของ Django สำหรับความรับผิดชอบด้านการดูแลระบบ เรียนรู้เพิ่มเติม django-admin
ใช้ที่นี่; มันอยู่นอกเหนือขอบเขตของบทความนี้เล็กน้อย
startproject
เป็นคำสั่ง Django ที่ช่วย ในการสร้างโครงการ ที่นี่เราส่งต่อชื่อโครงการของเรา ecommerce_site จากนั้นจะสร้างโปรเจ็กต์ในไดเร็กทอรีชื่อ ecommerce_site ไดเร็กทอรีควรมีลักษณะดังนี้
เราจะต้องไปที่ไดเร็กทอรีที่สร้างขึ้นใหม่และเรียกใช้คำสั่งเพื่อ สร้างแอป
cd ecommerce_site python manage.py startapp trading
startapp
เป็นคำสั่งที่ดำเนินการโดย manage.py
ในไดเร็กทอรีโปรเจ็กต์ มันสร้างไฟล์หลายไฟล์ และโฟลเดอร์ที่ตั้งชื่อโดยใช้ชื่อที่ระบุในคำสั่ง ในกรณีนี้ สิ่งที่ระบุคือ trading
โฟลเดอร์แอพประกอบด้วยไฟล์อย่างง่ายที่จำเป็นสำหรับการสร้างคุณสมบัติของแอพพลิเคชั่น ตอนนี้ไดเร็กทอรีของคุณควรมีลักษณะดังนี้:
หากคุณสงสัยความแตกต่างระหว่างโปรเจ็กต์กับแอพ โปรเจ็กต์คือเว็บแอปพลิเคชัน Django ซึ่งสามารถประกอบด้วยแอปได้ตั้งแต่หนึ่งแอปขึ้นไป เป็นโฟลเดอร์ที่มีการจัดการ manage.py
และ โมดูล อื่นๆ ที่มีไฟล์ settings.py
และไฟล์อื่นๆ แอปคือแพ็คเกจหลามที่มีคุณลักษณะบางอย่าง รวมถึงไฟล์ต่างๆ เช่น models.py
การ ย้ายข้อมูล และอื่นๆ คุณสามารถตรวจสอบคำตอบนี้ใน Stack Overflow สำหรับข้อมูลเพิ่มเติม
โครงการเริ่ม startproject
จะสร้างไดเรกทอรีโครงการหลัก ในขณะที่แอป startapp
จะสร้างไดเรกทอรีแอป ทั้งสองยังได้รับการส่งต่อชื่อเพื่อใช้ในรุ่น startproject
เป็นคำสั่งแรกที่รันเมื่อสร้างโปรเจ็กต์ใหม่ ในขณะที่ startapp
ถูกรันภายในไดเร็กทอรีโปรเจ็กต์ใหม่
เลย์เอาต์ปัจจุบันเป็นแผนที่ที่ยอดเยี่ยมที่คุณสามารถใช้ได้สำหรับแอปพลิเคชันใดก็ตามที่คุณกำลังสร้าง ปรับขนาดได้และประกอบด้วยไฟล์ที่คุณต้องการ มีโอกาสสร้าง เปลี่ยนชื่อ แก้ไข และย้ายไฟล์ภายในโครงการ
การกำหนดค่าของ Django
Django จัดเตรียมการตั้งค่าและการกำหนดค่าต่างๆ ให้กับคุณ หลังจากที่รันคำสั่งทั้งสองในไฟล์ต่างๆ แล้ว มาดูไฟล์ที่สร้างขึ้นเพื่อเรียนรู้ว่าแต่ละไฟล์ทำอะไรได้บ้าง
settings.py
แอปพลิเคชันเว็บส่วนใหญ่ต้องการการกำหนดค่าเช่น การรับรองความถูกต้องเพื่อตรวจสอบผู้ใช้ อนุญาตผู้ใช้บางรายที่มีความสามารถบางอย่าง และกำหนดมาตรฐานความปลอดภัย สิ่งเหล่านี้จำเป็นเพื่อให้ผู้ใช้ของคุณได้รับประสบการณ์ที่ดีที่สุด จะต้องใช้เวลานานสำหรับคุณในฐานะนักพัฒนาซอฟต์แวร์ในการเริ่มต้นใช้งานแต่ละสิ่งเหล่านี้ด้วยตัวคุณเอง สำหรับทุกแอปพลิเคชันที่คุณทำงาน
Django จัดเตรียมการกำหนดค่าที่จำเป็นเหล่านี้และอื่น ๆ ให้คุณ - เพื่อให้คุณสามารถเลือกสิ่งที่คุณต้องการและเสียบเข้าไปได้ สิ่งเหล่านี้ทำใน settings.py
มีการตั้งค่าที่วางไว้แล้วเพื่อให้ฟังก์ชันพื้นฐานสำหรับคุณ
เมื่อ Django พยายามเรียกใช้โครงการ มีตัวแปรบางอย่างที่มันมองหา settings.py
เป็นไฟล์ที่เก็บตัวแปรที่นำไปสู่ไฟล์หรือข้อมูลอื่นๆ Django ถูกนำไปยังไฟล์นี้จากไฟล์ manage.py
และรับข้อมูลหรือโหลดไฟล์อื่นๆ ที่นำมาจากที่นี่
การกำหนดค่าเหล่านี้รวมถึง:
-
DEBUG
ฟังก์ชันDEBUG
ถูกตั้งค่าเป็นTrue
เพื่อเปิดใช้งานการอ่านข้อผิดพลาดและการดีบักโค้ดในการพัฒนา ควรตั้งค่าเป็นFalse
ระหว่างการใช้งานจริง (เช่น เมื่อคุณกำลังปรับใช้) การตั้งค่านี้ทำให้คุณสามารถดีบักโค้ดของคุณได้ดีขึ้นด้วยความช่วยเหลือของ Django เมื่อพยายามเรียกใช้โค้ดของคุณ -
INSTALLED_APPS
นี่คือรายการแอปทั้งหมดที่มีคุณลักษณะบางอย่างใน Django มันมาพร้อมกับแอพเริ่มต้นบางตัวเช่น'django.contrib.auth'
ซึ่งใช้สำหรับการตรวจสอบผู้ใช้django.contrib.admin'
สำหรับฟังก์ชันผู้ดูแลระบบและ'django.contrib.messages'
ที่จำเป็นสำหรับการส่งการแจ้งเตือนหรือข้อมูลไปยังผู้ใช้ แอปอื่นๆ ที่คุณสร้างโดยใช้คำสั่งstartapp
จะต้องอยู่ในนี้ก่อน Django จึงจะสามารถเรียกใช้ได้ -
MIDDLEWARE
เป็นเฟรมเวิร์กที่มีน้ำหนักเบาสำหรับการประมวลผลอินพุตและเอาต์พุตที่ส่งผ่านคำขอและการตอบสนองของ Django มิดเดิลแวร์แต่ละตัวทำหน้าที่เฉพาะกับแอป เช่น'django.contrib.auth.middleware.AuthenticationMiddleware'
ทำงานร่วมกับ'django.contrib.sessions'
เพื่อเชื่อมโยงผู้ใช้กับคำขอ คุณควรตรวจสอบคุณสมบัติเพิ่มเติมของมิดเดิลแวร์แต่ละตัวในเอกสาร -
ROOT_URLCONF
เป็นตัวแปรของเส้นทางที่ Django ค้นหาurlpatterns
ของคุณเมื่อมีการส่งคำขอไปยังแอปพลิเคชัน Django ของคุณ เมื่อใดก็ตามที่มีการร้องขอในแอปพลิเคชัน Django Django จะค้นหาตัวแปรนี้และโหลดไฟล์ชั้นนำและลูปแม้ว่ารายการurlpatterns
จะค้นหาเส้นทางที่ตรงกัน -
TEMPLATES
คือการตั้งค่าที่อนุญาตให้แสดงไฟล์ HTML เพื่อแสดงมุมมอง มันสื่อสารกับแอพคำขอตรวจสอบและส่งข้อความ ค่า'BACKEND'
และ'APP_DIRS'
ที่ตั้งค่าเป็นTrue
ทำให้ Django สามารถค้นหาไฟล์ HTML ภายในโฟลเดอร์ /templates'context_processors'
ในOPTIONS
เป็น callables ซึ่งรับคำขอเป็นอาร์กิวเมนต์และรวมเข้ากับบริบทเมื่อสร้างเทมเพลต callables เหล่านี้ทำงานเพื่อช่วยในการดีบัก การตรวจสอบสิทธิ์ และการจัดการคำขอโดยทั่วไป -
WSGI_APPLICATION
เป็นพาธที่นำไปสู่ตัวแปรapplication
ในไฟล์wsgi.py
-
DATABASE
คือพจนานุกรมที่มีการเข้าถึงฐานข้อมูลภายนอก (หรือภายในเช่นเดียวกับในกรณีของ sqlite เริ่มต้น) เช่น PostgresSQL, MySQL และ MongoDB นี่คือตัวอย่างฐานข้อมูล Postgres ที่ฉันจะใช้เป็นตัวอย่าง:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'db_name', 'USER': 'db_user', 'PASSWORD': 'db_password', 'HOST': 'localhost', 'PORT': '', } }
คุณสามารถตัดสินใจใช้ฐานข้อมูล sqlite เริ่มต้น ซึ่งใช้ไม่ได้ผลดีสำหรับการผลิต คุณสามารถตั้งค่าฐานข้อมูล Postgres ได้เหมือนด้านบน คุณจะต้องสร้างฐานข้อมูลก่อน และส่งผู้ใช้ รหัสผ่านที่มีสิทธิ์เขียนไปยังฐานข้อมูล
หมายเหตุ : สำหรับจุดประสงค์ของบทช่วยสอนนี้ คุณสามารถใช้ชุดฐานข้อมูล sqlite เริ่มต้นได้แล้ว ด้านบนเป็นการสาธิตวิธีการตั้งค่าการเชื่อมต่อฐานข้อมูล SQL และ NO-SQL ใน Django
-
AUTH_PASSWORD_VALIDATORS
เหล่านี้เป็นฟังก์ชันที่เรียกว่าการตรวจสอบรหัสผ่าน พวกเขาถูกเรียกเมื่อสร้างผู้ใช้ (และผู้ดูแลระบบด้วย) บันทึกการรีเซ็ตและเปลี่ยนรหัสผ่าน คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับพวกเขาได้จากเอกสารอย่างเป็นทางการ
ดูเอกสารเพิ่มเติมเกี่ยวกับการตั้งค่าได้ที่นี่
manage.py
โครงการเว็บส่วนใหญ่ต้องการจุดเริ่มต้นที่คำสั่งเริ่มต้น จุดเริ่มต้นที่ทำหน้าที่เป็นเกตเวย์เข้าสู่แอปพลิเคชัน ในทุกโปรเจ็กต์ Django มักจะเป็นไฟล์ manage.py
ไฟล์นี้จำเป็นต้องใช้เป็นจุดเริ่มต้นในแอปพลิเคชันของคุณ จากที่นี่ คำสั่งทั้งหมดจะทำงานและทุกอย่างเริ่มต้นที่นี่
manage.py
ทำหน้าที่เหมือนกับ django-admin นอกจากนี้ยังบอก Django เกี่ยวกับตำแหน่งสำหรับการกำหนดค่าที่คุณมีในแอปพลิเคชันของคุณ ค่านี้ถูกตั้งค่าเป็นค่าเริ่มต้นและไม่จำเป็นต้องเปลี่ยนแปลง
มันใช้ฟังก์ชัน def main()
เพื่อจัดการโมดูลการตั้งค่าเริ่มต้นกับไฟล์ settings.py
ของเรา จะพยายามนำเข้าฟังก์ชันการดำเนินการ และหากเกิดข้อผิดพลาด ก็จะส่ง ImportError
ไม่เช่นนั้น sys.argv
จะรับอาร์กิวเมนต์ใดก็ตามที่ส่งผ่านจากบรรทัดรับคำสั่งและดำเนินการ
sys.argv
เป็นรายการที่ใช้ในคำสั่งที่ส่งผ่านผ่านเทอร์มินัล เมื่อเรารัน python manage.py runserver
ในบรรทัดคำสั่ง sys.argv
จะถูกตั้งค่าเป็น ["manage.py", "runserver"]
และสิ่งนี้จะถูกส่งไปยังฟังก์ชัน execute()
อาร์กิวเมนต์ เช่น python manage.py startapp trading
หรือ python manage.py makemigrations
ถูกตั้งค่าเป็น [ "manage.py", "startapp", "trading"]
และ ["manage.py", "makemigrations"]
ตามลำดับสำหรับการดำเนินการ
คำสั่ง if ถูกตั้งค่าให้รันหากคำสั่งที่กำหนดเป็น manage.py
นอกเหนือจากการเรียกใช้ฟังก์ชัน django-admin
คุณจะใช้มันในการรันเซิร์ฟเวอร์ จัดการการย้ายข้อมูล และคำสั่งอื่นๆ ที่โครงการของคุณจะใช้ คุณจะต้องใช้เมื่อปรับใช้ ทดสอบ และดีบักโปรเจ็กต์ของคุณ
เค้าโครงแบบจำลอง
Django มีเลย์เอาต์การสร้างแบบจำลองที่เรียบง่ายสำหรับคุณ คุณกำหนดค่าโมเดลของคุณในไฟล์ models.py
ในไดเร็กทอรี trading
คลาสของคุณ (หรือโมเดล) คือเลย์เอาต์ที่ตารางฐานข้อมูลของคุณจะทำตาม
คุณกำหนดคลาสของคุณตามประเภทข้อมูลที่คุณต้องการรับจากผู้ใช้ (หรือผู้ดูแลระบบ) สำหรับแต่ละตาราง โมเดลของเราสร้างไฟล์การโยกย้ายที่ทำงานร่วมกับตัวแปร DATABASE
ใน settings.py
มาสร้างแบบจำลองสองแบบที่เราต้องการสำหรับผลิตภัณฑ์และคำสั่งซื้อ:
from django.db import models class Product(models.Model): name = models.CharField(max_length=50) image = models.ImageField(upload_to='products', default='python.png') price = models.IntegerField() description = models.TextField() def __str__(self): return self.name class Order(models.Model): product = models.ForeignKey(Product, on_delete=models.CASCADE) quantity = models.IntegerField() date = models.DateField(auto_now_add=True) user = models.CharField(max_length=50) def __str__(self): return self.user
โมเดลผลิตภัณฑ์มีคอลัมน์ชื่อ ราคา คำอธิบาย และรูปภาพ (ซึ่งเมื่อบันทึกแล้วจะถูกอัปโหลดไปยังโฟลเดอร์ products
ซึ่งจะถูกสร้างขึ้นหากไม่มีโฟลเดอร์ดังกล่าว) order
มี product
(เชื่อมโยงกับตาราง products
) ปริมาณ วันที่ และคอลัมน์ผู้ใช้
ด้วยข้อมูลนี้ Django จะสร้างสคีมาฐานข้อมูลสำหรับแอป ยังสร้าง API การเข้าถึงฐานข้อมูล Python สำหรับการเข้าถึงวัตถุ Product และ Order Django มีเครื่องมือการย้ายข้อมูลที่สร้างขึ้น ดังนั้นคุณจึงไม่จำเป็นต้องใช้แพ็คเกจภายนอกสำหรับการย้ายข้อมูล
ขั้นตอนต่อไปคือการรันคำสั่งการโยกย้ายและย้ายไปยังฐานข้อมูล แต่ก่อนที่เราจะทำอย่างนั้น เราต้องลงทะเบียน trading
เป็นแอพในไดเรกทอรีโครงการของเรา
ก่อนอื่น เราต้องกำหนดค่าไดเร็กทอรีการค้าเป็นแอพใน Django Django ทำเพื่อคุณในไฟล์ app.py
ไฟล์นี้ลงทะเบียน trading
เป็นแอพและจะใช้ต่อไปในไฟล์ settings.py
ตอนนี้ใน settings.py
เพิ่ม trading
ใน INSTALLED_APP
ควรมีลักษณะดังนี้:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'trading.apps.TradingConf', ]
บนเทอร์มินัล ให้รัน:
$ python manage.py makemigrations trading $ python manage.py migrate
หมายเหตุ: คุณต้องเปิดใช้งานสภาพแวดล้อมเสมือนของคุณ และคุณควรอยู่ภายในไดเร็กทอรีโครงการ
python manage.py makemigrations trading
จะจดบันทึกการเปลี่ยนแปลงที่ทำในโมดูลการซื้อขาย และสร้างไฟล์ในโฟลเดอร์การ migration
ของการเปลี่ยนแปลงใน models.py
และ python manage.py migrate
จากนั้นอัปเดตการเปลี่ยนแปลง
คุณสามารถค้นหาไฟล์การโยกย้ายที่สร้างขึ้นจากคำสั่ง python manage.py makemigrations trading
ในไดเร็กทอรีการ migration
ชื่อ 0001_initial.py
คุณสามารถดูคลาสและคอลัมน์เป็นคำสั่งสำหรับการสร้างภายในไฟล์ เมื่อมีการเปลี่ยนแปลงใน models.py
มากขึ้น ไฟล์จะถูกสร้างขึ้นที่นี่มากขึ้น
คุณสมบัติผู้ดูแลระบบ
ในแอปพลิเคชันปัจจุบันของเรา เราจำเป็นต้องมีคุณลักษณะของผู้ดูแลระบบเพื่อจัดการผลิตภัณฑ์และคำสั่งซื้อที่จะสร้างขึ้นในแอปพลิเคชัน Django มีฟังก์ชันผู้ดูแลระบบในตัวอยู่แล้ว แอพผู้ดูแลระบบ (คุณสมบัติ) ได้รับการลงทะเบียนในรายการ INSTALLED_APP
ของเราแล้ว 'django.contrib.admin'
นอกจากนี้ URL สำหรับผู้ดูแลระบบยังได้รับการลงทะเบียนใน urlpatterns
รายการไฟล์การกำหนดค่า URL ของเรา urls.py
; path('admin/', admin.site.urls),
. ไฟล์ admin.py
ช่วยให้คุณสามารถลงทะเบียนโมเดลและการดำเนินการ CRUD ที่จะดำเนินการกับโมเดลได้
ในการตั้งค่าผู้ดูแลระบบ ให้รันสิ่งนี้บนเทอร์มินัล:
$ python manage.py createsuperuser
คุณจะได้รับแจ้งให้ป้อนชื่อผู้ใช้ อีเมล และรหัสผ่าน หลังจากนั้น คุณได้สร้างผู้ดูแลระบบสำเร็จแล้ว ในการเริ่มต้นใช้งานฟังก์ชันผู้ดูแลระบบ ให้เรียกใช้เซิร์ฟเวอร์:
$ python manage.py runserver
การเยี่ยมชม https://127.0.0.1:8000/admin/ จะนำไปสู่เซสชันการเข้าสู่ระบบ เมื่อคุณเข้าสู่ระบบ (ด้วยชื่อผู้ใช้และรหัสผ่านที่คุณสร้างขึ้น) คุณจะถูกนำไปที่แดชบอร์ดผู้ดูแลระบบ:
กลุ่มและผู้ใช้เป็นการกำหนดค่าเริ่มต้นที่อนุญาตให้ผู้ดูแลระบบเข้าถึงการจัดการและการอนุญาตผู้ใช้ ตอนนี้ มาลงทะเบียนโมเดลของเรากัน
ใน admin.py
ให้เพิ่มบรรทัดต่อไปนี้:
from django.contrib import admin # Register your models here. from .models import Product, Order admin.site.register(Product) admin.site.register(Order)
from django.contrib import admin
นำเข้าฟังก์ชันการทำงานของผู้ดูแลระบบจาก Django จากนั้นเรานำเข้าทั้งสองคลาสจาก models.py
ของเราและลงทะเบียนไว้ เพื่อให้ผู้ดูแลระบบสามารถดำเนินการ CRUD กับผลิตภัณฑ์และสั่งซื้อจากแดชบอร์ดได้
หลังจากลงทะเบียนโมเดลแล้ว แดชบอร์ดของคุณควรมีลักษณะดังนี้:
เพิ่มสินค้า:
การสั่งซื้อจากแดชบอร์ดผู้ดูแลระบบ:
กำหนดเส้นทางง่าย
ทุกไซต์ต้องการเส้นทางหรือ URL ที่นำไปสู่หน้าเฉพาะที่มีข้อมูลบางอย่างสำหรับผู้ใช้ปลายทาง คอลเล็กชันข้อมูลหรือแอปพลิเคชันที่คล้ายกันสามารถเข้าถึงได้ในเส้นทางใดเส้นทางหนึ่ง จำเป็นต้องจัดกลุ่มเส้นทางเข้าด้วยกันเพื่อการช่วยสำหรับการเข้าถึงและการสื่อสารภายในไฟล์ Django ทำเพื่อคุณในไฟล์ urls.py
urls.py
เป็นไฟล์ที่นำจากตัวแปร ROOT_CONF
ใน settings.py
นี่คือส่วนกำหนดค่า URL หลักของเรา เมื่อเราสร้างมุมมองในไฟล์หรือโฟลเดอร์ต่างๆ หรือแม้แต่ในไฟล์ urls.py
จะต้องกำหนดค่าไว้ในรายการ urlpatterns
Django คาดหวังรายการชื่อ urlpatterns
ในไฟล์ คุณสามารถเปลี่ยนไฟล์ในตัวแปร ROOT_CONF
เป็นไฟล์อื่นที่คุณวางรายการ urlpatterns
urlpatterns = [ path('admin/', admin.site.urls), ]
รายการประกอบด้วยอ็อบเจ็กต์ที่เป็นอินสแตนซ์ของ path
หรือเส้นทาง re-path
แต่ละอินสแตนซ์มีพารามิเตอร์บังคับสองแบบ รูปแบบ 'admin/'
และไฟล์มุมมองหรือ URL admin.site.urls
อินสแตนซ์อาจนำไปสู่ไฟล์อื่นที่มีการกำหนดค่า URL มากกว่า สิ่งนี้ทำเพื่อให้อ่านง่าย
views.py
ความต้องการที่สำคัญสำหรับแอปพลิเคชันแบ็กเอนด์คือมุมมองที่แต่ละเส้นทางเชื่อมโยงไปถึง ใน Django คุณเขียนฟังก์ชันหรือมุมมองตามคลาสสำหรับแอปในไฟล์ views.py
มุมมองคือคลาสหรือฟังก์ชันที่ประมวลผลคำขอและส่งการตอบกลับไปยังผู้ใช้ของคุณ
แก้ไขไฟล์ views.py
ของคุณเป็น:
from django.http import HttpResponse def home(request): return HttpResponse("This is a shopping site for products") def order(request): return HttpResponse("Hello, welcome to our store, browse to our products and order!")
ที่นี่เรานำเข้า HTTPResponse
เพื่อใช้ในการกำหนดมุมมองสองมุมมอง (มุมมองฟังก์ชัน) เพื่อส่งคืนประโยคเมื่อเรียกใช้ def home
ควรถูกเรียกเมื่อคุณไปที่ที่อยู่หลักและ def order
เมื่อคุณเข้าถึง URL การสั่งซื้อ
หลังจากสร้างมุมมองของเราแล้ว เราจำเป็นต้องกำหนดให้กับเส้นทางต่างๆ (หรือ urlpatterns
) ซึ่งสามารถทำได้หลายวิธี เราสามารถสร้างรายการ urlpatterns
ในไฟล์เดียวกัน หรือเราอาจนำเข้า trading.views
ลงในไฟล์ ecommerce_site.urls
และสร้างพาธ
วิธีที่แนะนำคือการสร้างไฟล์การกำหนดค่า URL ย่อย (ภายใน trading
) และรวมไว้ใน ecommerce_site.urls
สร้างไฟล์ urls.py
ในไดเร็กทอรี trading
ไดเร็กทอรีของคุณควรมีลักษณะดังนี้:
trading/ __init__.py admin.py apps.py migrations/ __init__.py 0001_initial.py models.py tests.py urls.py views.py
เพิ่มรหัสต่อไปนี้ในไฟล์ใหม่ของคุณ ( urls.py
)
from django.urls import path from . import views urlpatterns = [ path('', views.home, name='home'), path('order/', views.order, name='order'), ]
มาลงทะเบียนไฟล์การกำหนดค่า URL trading
( urls.py
) ในไฟล์การกำหนดค่า URL ของโครงการ
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path('', include('trading.urls')) ]
เพื่อให้สามารถเข้าถึง urlpatterns
เราจะใช้คลาส include
จาก django.urls
ในบรรทัดที่ 2 จากนั้นเลือกรูปแบบและแนบไฟล์ urls.py
ในไดเร็กทอรีการซื้อขาย
สิ่งที่เราทำที่นี่คือการนำเข้าคลาส path
จาก django และไฟล์ views.py
จากนั้น รายการของเราประกอบด้วยอินสแตนซ์พาธสองอินสแตนซ์สำหรับแต่ละมุมมอง ดังนั้น def home
จึงถูกเรียกบน https://127.0.0.1:8000/
และ def order
ถูกเรียกใน https://127.0.0.1:8000/order/
หมายเหตุ: กระบวนการรัน startproject
และ startapp
ไม่ได้บังคับ แต่ Django สนับสนุนอย่างมาก และคุณสามารถสร้าง/ย้ายไฟล์และโฟลเดอร์หลังจากรันแต่ละคำสั่งตามความสะดวกในการทำงานของคุณ
ต้นไม้พึ่งพา
นี่คือกระบวนการที่ Django ประมวลผลคำขอจาก URL ที่มา:
- Django ค้นหาตำแหน่งรูท (เส้นทาง) สำหรับ URL ของคุณในตัวแปร
ROOT_CONF
- Django โหลดไฟล์ python ที่ระบุในเส้นทางที่ระบุ และค้นหาตัวแปร
urlpatterns
นี่คือรายการที่มีอินสแตนซ์ทั้งหมดของdjango.urls.path()
และ/หรือdjango.urls.re_path()
- ในรายการ Django ดำเนินการตามลำดับและค้นหา URL ที่ตรงกัน
- Python นำเข้าและเรียกมุมมอง (ทั้งแบบอิงตามฟังก์ชันหรือแบบอิงคลาส) ซึ่งส่งต่อด้วยการร้องขอ HTTP
- มุมมองประมวลผลคำขอและข้อมูลที่ส่งผ่าน และส่งคืนข้อความ/เทมเพลตหรือเปลี่ยนเส้นทางไปยังมุมมองอื่น
- หากไม่มีรูปแบบ URL ที่ตรงกัน หรือมีข้อยกเว้นเกิดขึ้นระหว่างจุดใดๆ ในกระบวนการนี้ Django จะเรียกใช้มุมมองการจัดการข้อผิดพลาดที่เหมาะสม
บทสรุป
เราได้เรียนรู้ถึงความเป็นไปได้ในการสร้างไฟล์สำหรับ Django โดยไม่ต้องใช้บรรทัดคำสั่ง นอกจากนี้เรายังได้เรียนรู้ข้อดีและส่วนประกอบสำคัญของโครงการ Django Django เป็นเครื่องมือที่ยอดเยี่ยมในการสร้างโครงการแบ็กเอนด์โดยมีเป้าหมายเพื่อสร้างความเรียบง่าย
คุณสามารถตรวจสอบรหัสสำหรับบทช่วยสอนนี้ใน GitHub
ทรัพยากร
- การจัดการรหัสผ่านใน Django
- จังโก้: เริ่มต้น
- Django: การตั้งค่า
- Django น้ำหนักเบา โดย O'Reilly