ไขปริศนาเวทย์มนตร์ของจังโก้

เผยแพร่แล้ว: 2022-03-10
สรุปอย่างรวดเร็ว ↬ ในบทความนี้ เราจะเจาะลึกถึงสิ่งที่ Django นำเสนอในตารางด้วยการทำความเข้าใจว่าไฟล์และโฟลเดอร์ที่สร้างขึ้นทำอะไร ซึ่งจะทำให้เราเข้าใจกรอบงาน Django ได้ดีขึ้น

ตามเอกสารอย่างเป็นทางการ

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 ไดเร็กทอรีควรมีลักษณะดังนี้

แสดงไดเร็กทอรีหลังจาก startproject
กำลังแสดงโฟลเดอร์หลังจากรัน startproject (ตัวอย่างขนาดใหญ่)

เราจะต้องไปที่ไดเร็กทอรีที่สร้างขึ้นใหม่และเรียกใช้คำสั่งเพื่อ สร้างแอป

 cd ecommerce_site python manage.py startapp trading

startapp เป็นคำสั่งที่ดำเนินการโดย manage.py ในไดเร็กทอรีโปรเจ็กต์ มันสร้างไฟล์หลายไฟล์ และโฟลเดอร์ที่ตั้งชื่อโดยใช้ชื่อที่ระบุในคำสั่ง ในกรณีนี้ สิ่งที่ระบุคือ trading โฟลเดอร์แอพประกอบด้วยไฟล์อย่างง่ายที่จำเป็นสำหรับการสร้างคุณสมบัติของแอพพลิเคชั่น ตอนนี้ไดเร็กทอรีของคุณควรมีลักษณะดังนี้:

แสดงไดเร็กทอรีหลังจาก startapp
กำลังแสดงโฟลเดอร์หลังจากเรียกใช้ startapp (ตัวอย่างขนาดใหญ่)

หากคุณสงสัยความแตกต่างระหว่างโปรเจ็กต์กับแอพ โปรเจ็กต์คือเว็บแอปพลิเคชัน 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/ จะนำไปสู่เซสชันการเข้าสู่ระบบ เมื่อคุณเข้าสู่ระบบ (ด้วยชื่อผู้ใช้และรหัสผ่านที่คุณสร้างขึ้น) คุณจะถูกนำไปที่แดชบอร์ดผู้ดูแลระบบ:

นี้แสดงแดชบอร์ดของผู้ดูแลระบบ
แดชบอร์ดผู้ดูแลระบบจัดทำโดย Django (ตัวอย่างขนาดใหญ่)

กลุ่มและผู้ใช้เป็นการกำหนดค่าเริ่มต้นที่อนุญาตให้ผู้ดูแลระบบเข้าถึงการจัดการและการอนุญาตผู้ใช้ ตอนนี้ มาลงทะเบียนโมเดลของเรากัน

ใน 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/

แสดงเว็บไซต์เมื่อคุณเยี่ยมชม URL คำสั่งซื้อ
เยี่ยมชม URL คำสั่งซื้อแล้ว (ตัวอย่างขนาดใหญ่)

หมายเหตุ: กระบวนการรัน startproject และ startapp ไม่ได้บังคับ แต่ Django สนับสนุนอย่างมาก และคุณสามารถสร้าง/ย้ายไฟล์และโฟลเดอร์หลังจากรันแต่ละคำสั่งตามความสะดวกในการทำงานของคุณ

ต้นไม้พึ่งพา

นี่คือกระบวนการที่ Django ประมวลผลคำขอจาก URL ที่มา:

  1. Django ค้นหาตำแหน่งรูท (เส้นทาง) สำหรับ URL ของคุณในตัวแปร ROOT_CONF
  2. Django โหลดไฟล์ python ที่ระบุในเส้นทางที่ระบุ และค้นหาตัวแปร urlpatterns นี่คือรายการที่มีอินสแตนซ์ทั้งหมดของ django.urls.path() และ/หรือ django.urls.re_path()
  3. ในรายการ Django ดำเนินการตามลำดับและค้นหา URL ที่ตรงกัน
  4. Python นำเข้าและเรียกมุมมอง (ทั้งแบบอิงตามฟังก์ชันหรือแบบอิงคลาส) ซึ่งส่งต่อด้วยการร้องขอ HTTP
  5. มุมมองประมวลผลคำขอและข้อมูลที่ส่งผ่าน และส่งคืนข้อความ/เทมเพลตหรือเปลี่ยนเส้นทางไปยังมุมมองอื่น
  6. หากไม่มีรูปแบบ URL ที่ตรงกัน หรือมีข้อยกเว้นเกิดขึ้นระหว่างจุดใดๆ ในกระบวนการนี้ Django จะเรียกใช้มุมมองการจัดการข้อผิดพลาดที่เหมาะสม
ต้นไม้แสดงให้เห็นว่า Django จัดการกับคำขออย่างไร
Django จัดการคำขอ (ตัวอย่างขนาดใหญ่)

บทสรุป

เราได้เรียนรู้ถึงความเป็นไปได้ในการสร้างไฟล์สำหรับ Django โดยไม่ต้องใช้บรรทัดคำสั่ง นอกจากนี้เรายังได้เรียนรู้ข้อดีและส่วนประกอบสำคัญของโครงการ Django Django เป็นเครื่องมือที่ยอดเยี่ยมในการสร้างโครงการแบ็กเอนด์โดยมีเป้าหมายเพื่อสร้างความเรียบง่าย

คุณสามารถตรวจสอบรหัสสำหรับบทช่วยสอนนี้ใน GitHub

ทรัพยากร

  • การจัดการรหัสผ่านใน Django
  • จังโก้: เริ่มต้น
  • Django: การตั้งค่า
  • Django น้ำหนักเบา โดย O'Reilly