مرحبا ومرحبا بكم في Django آخر
للجميع المشي من خلال.
لذلك ربما كنت في هذه المرحلة
تعمل على تعيين السيارات الخاصة بك.
هذا هو أول
مهمة حقيقية لإنشاء وقراءة وتحديث وحذف.
وهناك الكثير من ما هو هذا الواجب،
هو أن ننظر إلى رمز
لقد أعطيتك في نماذج DJ4E وسحبه في.
لا تستنسخ المستودع لهذا الواجب.
عينات DJ4E هو وحش.
لقد حصلت على جميع أنواع الاشياء في ذلك،
انها وسيلة معقدة جدا وكنت لا تريد.
تريد أن تبدأ مع لطيفة، تطبيق نظيفة.
كانت مهمتك السابقة لجعل
تطبيق صغير حقا أسفل،
ونحن في طريقنا لتوسيع هذا التطبيق.
هذا هو السبب في أن لديك بالفعل
هذه المشاريع DJ4E في أينما كان.
إذن ما هو هذا،
هو هذا الواجب هو تطوير
ذلك باستخدام نموذج التعليمة البرمجية.
ولكن ما سأقوم
به حقا هو أنني ذاهب إلى المشي من خلال
نموذج التعليمات البرمجية لأن هناك
مفاهيم جديدة في هذا النموذج التعليمات البرمجية.
لذلك هذا هو أكثر من محاضرة حول
نموذج التعليمات البرمجية من بالضبط كيفية القيام بهذه المهمة.
ولكن الأهم من ذلك، تحتاج إلى
فهم كل سطر واحد لأنه حرفياً،
كل برنامج سنقوم بكتابته
للأسابيع n القادمة هو اختلاف في هذا CRUD.
لذلك هذه المشاهدات الافتراضية،
الحصول على 404،
كل هذه الأشياء هي الأساس حقا في الكثير من الأشياء.
ما سنجده هو
الطريقة الصحيحة لكتابة هذا الرمز،
مثل كل شيء في Django،
صغير جدًا وموجز.
لذلك دعونا نلقي نظرة على التعليمات البرمجية.
حسنا، دعونا المضي قدما وتشغيل التعليمات البرمجية.
انتقل إلى السيارات، وكنت قد حصلت على تسجيل الدخول.
لذا فإن فكرة هذا هي أن هناك جدولين.
هناك جدول يجعل.
لذلك أنا ذاهب لإضافة جعل
ومن ثم أنا ذاهب لإضافة السيارات،
والشيء الرائع حول هذا هو نيون
1، الأميال 1،234، سكالكارد.
ثم لدي هذه القائمة المنسدلة باردة.
لذلك هناك مجموعة كاملة من الأشكال التي تحدث هنا،
هناك تنازلات، هناك
علاقة كثيرة لواحدة مستمرة.
ثم لدي هذه القائمة ويمكنني تحديثها وحذفها.
لذلك هذا هو المكان الذي لدينا كرود الكامل.
حتى نتمكن من إضافة يجعل،
عرض يجعل، إضافة السيارات، وما إلى
ذلك لذلك هذا كل عينة.
لذلك هو قريب جدا من ما هو عليه أن عليك أن تكتب،
انها فقط لا تذهب الاستيلاء على كل تلك الأشياء.
لذلك دعونا نبدأ من خلال إلقاء نظرة.
لذلك أنا هنا جالس في عينات DJ4E الخاصة بي.
إذا نظرتم، سترى جميع
تطبيقاتي المختلفة في إطار مشروع.
لذلك لدينا السيارات،
ولكن أريد حقا أن تبدأ مع رمز المصادقة،
إذا ذهبت هنا مرة أخرى إلى عينات،
اسمحوا لي أن تسجيل الخروج، الرمز الذي يسمح لي لتسجيل الدخول.
حتى إذا ذهبت مباشرة إلى السيارات لمعرفة ما إذا كنت قد سجلت الخروج.
ستلاحظ أن ما يفعله
عندما أذهب مباشرة إلى السيارات،
هو توجيه لي لتسجيل الدخول،
ثم مع القادم للعودة إلى السيارات.
لذا فإن هذا العرض في السيارات،
فقد قام /autos بحماية نفسها مع خلط تسجيل الدخول.
في وقت لاحق سنقوم بتسجيل الدخول،
لن يبدو تسجيل الدخول الخاص بك تماما مثل
هذا، ولكن هذا هو الذي لدي على العينات.
لم يكن لديك لجعلها جميلة حتى الآن،
المهام القادمة سوف تجعل كل شيء جميل.
حتى الآن نحن في السيارات ونحن تسجيل الدخول.
التطبيق الخاص بك يجب أن يكون بعض الأشياء أكثر هنا،
ولكن أنا أكثر اهتماما في إظهار
لكم حقا
جوهر وجهات النظر في هذه السيارات.
دعونا فقط نراجع بإيجاز حول كيفية عمل تسجيل الدخول التلقائي.
حتى إذا نظرت إلى dj4e-samples/settings.py،
تحتاج إلى أن يكون هذا المصادقة موصولة في.
لذلك هذا هو في الأساس مجموعة من التعليمات البرمجية، وبعض وجهات النظر
، وما إلى ذلك، التي تأتي من Django،
والتي كانت هناك طوال الوقت
عندما قمت بمشروع البدء الخاص بك.
بطبيعة الحال، ثم في مكان ما هنا،
ونحن قد حصلت على السيارات، أينما كانت السيارات.
نعم، autos التطبيق التكوين،
كنت قد حصلت على سحب التطبيق السيارات في.
إذا ألقيت نظرة على dj4e-samples/urls.py،
ثم يمكنني العثور على السيارات هنا،
وهناك حاجة إلى أن يكون بعض الخط الذي يقول أساسا،
«في المستوى العلوي،
يتم تفويض كل شيء أدناه السيارات إلى
ملف عناوين المواقع في autos.py.
ولكن أيضا بعد ذلك هناك الحسابات».
لذلك إذا كنت تتذكر،
هذه مجموعة من وجهات النظر التي تأتي من جانغو بالنسبة لنا،
انها مثبتة مسبقا بالنسبة لنا.
الشيء الذي علينا القيام به هو أننا قد حصلت
على تقديم هذا القالب
مع اسم registration.html.
لذلك أعتقد أنني حصلت على هذا في المنزل/قالب/التسجيل/.
نعم، أنا أعْمَلُ. لذلك لدي في الواقع اثنين من عمليات تسجيل الدخول.
لقد حصلت على واحدة بسيطة حقا كما login.html.
هذا هو واحد أوصي أن تبدأ مع.
في وقت لاحق سنستخدم تسجيل الدخول الاجتماعي. هذا بسيط جداً
إنها صفحة تسجيل الدخول التي تستخدم إمكانية نماذج Django.
إذا شكلت أخطاء،
وهذا يعني أن هناك خطأ التحقق من الصحة.
عاد وأعيد عرض
هذه الصفحة وأظهر لك خطأ.
ثم نجعل نموذج مشاركة بسيط مع عنوان URL
الذي هو بحث عكسي إلى طريقة عرض مع اسم تسجيل الدخول.
ثم نضع رمز CSRF في ثم نأخذ النموذج،
وأنا فقط جعل هذا مع علامات الفقرة.
لذلك هذا تسجيل دخول بسيط،
وهذا ليس واحد الفعلي الذي نعرضه.
ثم التالي هو قيمة مخفية التي كنت قد حصلت على تمرير
في بحيث عندما كنت بالفعل تسجيل الدخول بنجاح،
فإنه يعرف أن يعود إلى السيارات.
عندما يتم كل شيء، فإنه يعود
هنا بعد أن تم تسجيل الدخول.
بحيث التسجيل/تسجيل الدخول،
يمكنك وضع هذا في أي من التطبيقات الخاصة بك،
ولكن تريد أن تسميته registration/login.html.
حتى إذا ألقيت نظرة سريعة حقيقية
وأذهب إلى المنزل/القوالب،
وهذه هي كل القوالب.
عندما أفعل ls، سترى أن لدي
منزل/قالب/المنزل ومنزل/قالب/التسجيل.
يمكنك الحصول على أكثر من مجلد واحد هنا.
إذا نظرت إلى ما هو قيد التسجيل،
ترى أنني حصلت على تسجيل الدخول البسيط هذا ثم في وقت لاحق تسجيل الدخول
الأكثر تعقيدًا الذي سيعطينا
قدرات تسجيل الدخول GitHub.
لذلك ما يعنيه ذلك هو استخدام تسجيل الدخول الاجتماعي.
النقطة تحت هذه القوالب،
لم يكن لديك فقط مجلد فرعي واحد،
يمكن أن يكون لديك أكثر من مجلد فرعي واحد.
لذلك هذا هو التكوين الضروري لجعله
بحيث عندما نقول وجهات نظرنا لإضافة ميكسين تسجيل الدخول،
والتي سنراها في ثانية واحدة فقط.
نخبر وجهات نظرنا في تسجيل الدخول لاستخدام mixin تسجيل الدخول،
ثم يعرف من أين يمكن الحصول على القالب.
لذلك هذا مجرد جزء منه
وتعليماتك تخبرك كيف تفعل ذلك.
لذلك أي تطبيق أنك ذاهب
لبناء أو أي مشروع كنت ذاهب لبناء،
لديك لوضع تلك في إعدادات py،
urls.py، ومن ثم جعل القالب.
ثم عليك أن تبدأ في استخدام
mixin تسجيل الدخول ثم
يبدأ كل شيء بطريقة سحرية معا.
لذلك دعونا نلقي نظرة على تطبيق السيارات الفعلية.
سنلقي نظرة على اثنين من الأشياء المختلفة
هنا، السيارات/عناوين المواقع.
سأقوم بعمل علامة تبويب متعددة المحطات،
حتى أتمكن من التبديل بين الملفات بسرعة كبيرة.
ربما لديك محرر نصوص أفضل مني
لذلك لدي عناوين المواقع،
وأنا ذاهب لإلقاء نظرة على autos/views.py.
ثم أنا ذاهب للنظر في autos/model.py.
ثم أنا ذاهب للنظر في autos/forms.py.
لذلك دعونا نعمل من خلال هذه الملفات الأربعة،
عناوين URL، وجهات النظر، النماذج، النماذج.
ربما دعونا نفعل النماذج أولا.
لذلك هذا واضح جدا.
نحن ذاهبون لجعل فئة كائن جعل.
سيكون لديك حقل حرف واحد
مع بعض المدققين فيه.
نحن نلعب مع ذلك مع أشكال.
يمكنك وضع المدققين في النماذج.
لقد رأينا سابقا المدققين في شكل،
ولكن هناك مدقق أن يقول أساسا،
ونحن لن نقبل البيانات القادمة إلى
جدول قاعدة البيانات هذا ما لم يكن
هناك حرفين على الأقل.
هذا _str_، كنت تفعل هذا لفترة من الوقت.
هذا هو أساسا إذا كنت تأخذ
كائن نموذج جعل الفعلي وقمت بطباعته،
فإنه يقول أي من الحقول،
في هذه الحالة، هناك حقل واحد فقط.
بحيث يقول فقط عندما نقوم بتحويل
كائن نموذج إلى سلسلة،
يمكننا أن نقرر كيف يبدو ذلك.
ثم لدينا
سيارة وحصلت على لقب مع MinlengthValidator، max_length من 200
، والأميال، التي لديها حقل صحيح، تعليقات،
وهو حقل 300 حرف،
ثم مفتاح خارجي أيضا.
هذا كعلاقة واحد إلى كثير أو العديد إلى واحد
، وليس العديد إلى العديد، مجرد مفتاح خارجي إلى جعل.
ثم نحن ذاهبون إلى on_delete
CASCADE مما يعني حقا إذا قمت بحذف Make،
فسيتم حذف الإدخالات التلقائية المقابلة تلقائيًا.
لذلك هذا نموذج بسيط جدا،
في الواقع بسيط جدا جدا.
مرة أخرى، نحن دائما تحديد
هذا _str_ (self) بحيث نعرف أنه إذا كنت
فقط تظهر كما في
واجهة المشرف أو إذا كنت مجرد
طباعتها أو مجرد
تحويل النموذج نفسه إلى سلسلة،
الحقل بين هذه الحقول التي
من المفترض أن تستخدم هو ،
فقط لإظهار للمستخدمين النهائيين.
إذن هذا هو ملف النماذج
دعونا ننظر إلى ملف النماذج المقبل.
لذا فإن ملف النموذج مثير للاهتمام،
لأننا رأينا النماذج التي
هي مجرد أشكال في حد ذاتها،
ولكن هذا هو نوع خاص من
النموذج ومن ثم انها نموذج.
في ذلك، نحن عادة في النماذج الأخرى،
كان لدينا كل هذه الحقول،
ووضعناها في وبدا
كثيرا مثل ملف نموذج حيث
لدينا حقل حرف، PositiveIntegerField.
لكن ما نقوله أساساً هو، أتعلمين ماذا؟
نحن في طريقنا لجعل نموذج هنا.
حقا، كل ما نريد القيام به هو أخذ
جميع الحقول
من نموذج جعل وجعلها تشكل الحقول.
لذا فإن النموذج والنموذج هما شيئان مختلفان.
النموذج هو شيء يذهب
بين العرض والقالب،
وكما سترى،
فإنه يذهب أيضا إلى النماذج تلقائيا،
لذلك هذا هو تماما مثل جعل جميع الحقول.
دعونا نصنع نموذجًا لأن
كائنات النموذج لا يجب أن تكون مرتبطة بالنماذج.
ولكن في هذه الحالة، سنقوم
باستخلاص كائن نموذج من نموذج.
لذا بدلاً من توسيع النموذج، نقوم بتوسيع ModelForm.
لذلك يجب أن يكون نموذج ModelForm،
وهذه مجرد بعض البيانات التي تقول أن النموذج الذي
سنقوم بسحب جميع حقولنا
منه هو نموذج Make، ولها شيء واحد فقط وهو اسم.
هذا كل شيء لذلك هذا هو السيارات توليد
نموذج أنه إذا
قمنا بتغييره وإضافة حقل آخر هنا،
ثم هذا النموذج جعل سيكون تلقائيا حقل.
يمكنك أن تعطيه قائمة من الحقول،
_ _ كل _
مثل إشارة تقول، «فقط أعطني كل منهم».
الآن قد يكون هناك بعض
الأشياء الداخلية مثل التي تم إنشاؤها
وتحديثها في أو شيء لا تريد استخدامه.
لذلك هذا نموذج، تذكر كيف تعمل النماذج.
نحن نغطي ذلك من قبل دعونا نلقي نظرة على عناوين URL الخاصة بنا.
الآن الكثير من هذا يبدو
مشابهًا إلى حد كبير للأشياء التي فعلناها.
لدينا أساسا جدول رئيسي،
وهو جدول السيارات لدينا،
وجدول البحث لدينا، وهو جدول يجعل لدينا.
ثم لدينا ثلاثة أشياء،
وهناك عرض القائمة الرئيسية،
والتي هي قائمة جميع السيارات.
هناك عرض قائمة جعل الرئيسي،
وهو قائمة جميع يجعل.
ثم يمكننا أن نصنع
واحدة جديدة لا تحتوي على مفتاح أساسي،
لأن جزءًا من الأفكار التي
تخلق هو صنع شيء جديد،
والذي سيولد مفتاحًا أساسيًا.
ثم نحن ذاهبون إلى الحصول على تحديث وحذف.
لذلك لدينا قراءة، إنشاء، تحديث، حذف.
لذا فهي ليست مؤمنة تماماً،
لكنك ترى كل هذه الأشياء الأربعة.
لذلك لدينا وجهات نظر،
ونحن نسمي هذه وجهات النظر حتى نتمكن من
الرجوع إليها في وجهات نظرنا
نفسها وفي نموذجنا
حتى نتمكن من جعل الروابط بينهما.
لذلك هذه
واضحة جدا وليس كل ذلك مختلف.
لذلك يبدأ المرح يحدث عندما نكون في views.py.
حتى تسجيل الدخول mixin،
إذا كنت تتذكر من مؤلف z المشي،
يمكنك فقط إضافة هذا إلى طريقة العرض
وتقول
في الأساس لا يمكنك الوصول إلى هذا العرض إلا إذا قمت بتسجيل الدخول وإذا لم تقم بتسجيل الدخول،
فإنه سيتم المطبات إلى
ملف login.html ثم ترتد مرة أخرى بعد القيام به.
لذا فإن LoginRequiredMixin هو كل ما نحتاج إلى القيام به.
إذا ذهبت إلى المؤلف ض عينة،
سترى مثل أنا فعلت ذلك باليد.
أنت لا تريد أن تفعل ذلك باليد،
فقط استدعاء mixin تسجيل الدخول.
الآن، لذلك هذا العرض الرئيسي هو عرض القائمة
، لذلك دعونا نذهب
نلقي نظرة على ما سيبدو عليه هذا.
هذا هو عرض القائمة.
لذلك نحن ذاهبون إلى اتخاذ العديد من عمليات التدقيق لدينا،
ونحن في طريقنا إلى حلقة من خلال تلك القائمة،
ونحن في طريقنا لاسترداد جميع عمليات التدقيق من قاعدة البيانات.
ثم نحن في طريقنا إلى إضافة رابط السيارات،
ثم وجهة نظر التي تجعل الرابط مع
عدد من يجعل هناك وإضافة جعل.
لذلك اسمحوا لي أيضا ثم انتقل إلى قوالب السيارات،
السيارات مرة أخرى، وقائمة السيارات.
لذلك هذا هو القالب الذي يجعل ذلك.
لذلك هناك بعض الأشياء التي نحصل عليها،
نحصل على قائمة تلقائية.
الآن أسماء هذه ليست مجبرة عليك،
ولكن هناك اتفاقيات التي تظهر في لحظة،
ونحن في طريقنا لتبدو مفيدة حقا.
لذلك نحن ذاهبون للحصول على قائمة السيارات.
إذا عدنا إلى وجهات نظرنا،
فإننا نرى أننا نقول،
والحصول على جميع الكائنات من الجدول التلقائي،
وجميع الكائنات فئة السيارات استرداد كل منهم،
الماضي لهم في السياق كما auto_list.
الآن نريد أيضا أن نكون قادرين على
إظهار هذا العد الصغير، وهذا هو رقم اثنين،
لذلك نحن في طريقنا لنسأل،
المضي قدما في جعل الأشياء
كلها ولكن لا تعطيني قائمة بها،
عد لهم وتعطيني رقما.
لذلك جعل العد عالق هناك
وسترى ما إذا كان قد عد أكبر من الصفر.
يمكننا عرض الإعلان وزر السيارات،
وأنه أيضا في مكان ما يظهر جعل العد،
عرض جميع يجعل، إضافة جعل،
وجعل العد يخرج هنا.
لذلك هذا شيء آخر وضعناه.
القائمة التلقائية نحن ذاهبون للذهاب من خلال وهذا
متغير التكرار من السيارات هو الذهاب الى
الذهاب من خلال كل من الأشياء منفصلة،
وكنية، وجعل، وما إلى
ذلك، وهذا الحق مباشرة من ملف models.py.
هناك أربعة أشياء يملكها كل السيارات
ونحن فقط نقوم بطباعة كل هذه الأشياء
يمكنك أيضًا الحصول على المفتاح الأساسي،
وهكذا سنقوم بعمل عنوان URL للتحديث،
وعنوان URL هذا هو autos: auto_update.
لذا إذا نظرت إلى urls.py،
فإننا نرى أن هذا التحديث التلقائي يبحث،
وهذا يعطينا مسارًا إلى العرض،
ولكن هذا المسار المحدد يحتاج إلى
معلمة واحدة وهي مفتاح أساسي
، وهذا يعني أن علامة قالب عنوان URL هذه،
يجب أن يكون auto.id. من خلال النماذج،
حصلت على واحد، وكنت تفعل auto_create،
وهذا مستقيم جدا إلى الأمام.
لكن إحدى القواعد هي، أنه يجب أن يكون لديك
واحد على الأقل قبل أن تتمكن من القيام بعمل تلقائي،
لأنه إذا كنت تتذكر،
يجب
أن يكون لديك هذه القائمة المنسدلة قابلة للشغل ويتم سحبها من جدول الصنع،
وهكذا هذا هو الأساس الطريق حول هذا.
هذا هو المنظر الرئيسي
ها نحن ذا، تحديث
هذا هو عرض السيارات، وبعد ذلك إذا فعلنا عرض جعل،
ونحن نفعل نفس الشيء.
إذا ذهبنا وننظر إلى قائمة جعل،
ونحن نفعل نفس الشيء الأساسي،
وعرض جميع يجعل،
والآن حصلنا على تحديث وحذف.
بهذه الطريقة لا تحتاج إلى العد.
نحن نريد فقط الاستيلاء على جميع الكائنات،
ونحن نريد وضعها في سياق تحت قائمة جعل،
ومن ثم نقوم بعمل قائمة على HTML،
وهذا هو أبسط من ذلك.
انها مجرد الذهاب من خلال قائمة جعل،
فإنه يأتي من خلال السياق.
إذا لم يكن هناك شيء، فنحن لا
نطبع هذا، ثم نضع اسمه،
ومن ثم لدينا تحديث وزر حذف
يذهب إلى التحديث وحذف،
وبالطبع، إذا نظرت في urls.py،
فإن هذه أيضًا التحديث والحذف
لها متطلبات رئيسية،
وهكذا لديك مفتاح أساسي يجب
عليك تمريره هنا
لجعل عنوان URL هذا عنوان URL المناسب،
ثم بعض الروابط فقط
للعودة إلى الأشياء المختلفة حتى
نتمكن من العودة إلى السيارات،
عرض يجعل، إضافة جعل جديدة.
الآن، ألغي كل تلك الأشياء
لذلك هذا هو views.py
لإدراج السيارات ويجعل.
الآن، نريد أن نجعل طريقة عرض إنشاء.
حتى إذا ألقينا نظرة على جعل إنشاء عرض،
وهذا هو إضافة جعل.
هذا سيخلق هذا النموذج.
يمكنني أن أجعل هذا أكبر هنا
يمكنه إنشاء هذا النموذج،
حيث سنضع شيء يدعى (شيفي).
لذلك نحن بحاجة إلى وسيلة لجعل هذا النموذج.
نحن ذاهبون لجعله تسجيل الدخول المطلوبة،
ونحن لن ندع الناس القيام بذلك.
سيكون لدينا بعض المتغيرات التي هي على نطاق واسع،
مثل القالب الذي نريد استخدامه،
و success_url هو بعد أن قمنا بذلك الحق.
الآن، إذا قمت فقط
بإرسالها وتشتكي، فإنه لا يفعل ذلك.
ولكن بمجرد أن تفعل ذلك بشكل صحيح،
أين تريد أن تذهب بعد ذلك؟
إذن (شيفي)، أين تريدين الذهاب بعد ذلك؟
هذه هي وظيفة تحكم.
أريد أن أعود إلى القائمة التلقائية،
وبالتالي فإن success_url هو الذهاب
إلى السيارات: كل ما في urls.py هو هذا العرض الرئيسي.
هذا هو اسم العرض الرئيسي،
وحتى إذا ذهبنا هنا،
أي قالب لاستخدامه وأي success_url.
إذا فعلنا طلب الحصول على،
سنقوم ببناء نموذج
لجعل التي تأتي من شكل جعل،
ولكن في الحقيقة أنها تأتي من نموذج جعل،
وهو مجرد حقل سلسلة واحد.
بهذه البساطة نحن نعيد استخدام هذا
نحن فقط نقول، دعونا جعل النموذج
الذي ينسحب من هنا.
يجب علينا تمرير نموذج في،
لأنه لا يمكن استخدام النماذج لإنشاء هذه الشاشة.
تلك الشاشة تأتي من نموذج
حسناً إذا ألقينا نظرة على القالب,
إذا نظرنا إلى جعل إنشاء
قالب أو جعل النموذج.
لذلك هذا هو القالب الذي سنستخدمه لجعل النموذج.
سنحتاج إلى form_as_table.
لذلك هذا من الطريقة التي فعلنا بها الأشكال.
ضع الرمز المميز CSRF،
يمكنك إنشاء جدول،
يمكن أن يكون كفقرات أو جداول.
ولكن أيا كان، تحتاج هذا الكائن النموذج.
لذلك تحتاج إلى تمرير كائن النموذج في.
حتى نحن هنا، ونحن في طريقنا لجعل شكل
ومن ثم نحن ذاهبون إلى كائن النموذج في،
وبعد ذلك نحن ذاهبون لتقديم
self.template autos.makeform أتش تي أم أل.
ثم نحن ذاهبون إلى إعادة ذلك للحصول على.
ثم عندما نضغط
على زر إرسال، إضافة جعل،
ونحن اضغط على زر إرسال،
انها تأتي في وظيفة
لأننا جعلنا وظيفة نموذج، ويأتي في.
لا تفعل ذلك هذا فظيع
أكرهه عندما يفعل ذلك
لكن ها نحن ذا، لقد عدنا
نعم لذلك يأتي المنشور،
request.Post يحتوي على جميع أزواج القيمة الرئيسية
التي هي أزواج القيمة الرئيسية هذه كما هو محدد في النموذج.
لذلك نقول دعونا جعل شكل جعل مع
البيانات الأولية القادمة من طلب المشاركة.
وبالنظر إلى أن النموذج تولده،
فإنه يعرف ما هي أسماء هذه الحقول،
وهذا شيء يخفي وراء كيفية عمل النماذج.
ولكنه يتحقق أيضًا لمعرفة ما إذا كانت بيانات النموذج صالحة
وهذا يعني أننا نتبع كل قواعد التحقق هذه.
إذا لم يتم اتباع قواعد التحقق،
إذا لم يكن النموذج صالحًا،
فسنقوم بإرساله مرة أخرى.
لذلك هذا الرمز هنا،
هذا النموذج ليس رمزًا صالحًا.
إذا وضعت في حرف واحد A وضرب «إرسال»،
فسوف يعود ويعيد تقديم
النموذج وكل هذه الأخطاء،
يتم التعامل مع كل هذه الأشياء من خلال رمز النموذج
هذا، فإن رمز نموذج Django هذا الرقم ما هو الخطأ.
الحق أكثر قليلا فقط حتى أتمكن من
العودة إلى ذلك بشكل أسرع. ها نحن ذا
فإنه الرقم ما هو الخطأ في ذلك،
يجعل رسالة خطأ،
جاءت رسالة الخطأ من models.py هنا.
لا، هنا
ثم ذهب من خلال forms.py لأنه
شكل في نهاية المطاف أننا ورثناه من
نموذج النموذج. فهمتِ ذلك؟
لذا هذا رائع لذلك هذا هو حالة الخطأ،
وإلا فإننا نفعل form.save.
الآن الشيء هنا الذي هو
رائع حقا هو لأن هذا النموذج هو
نموذج
وأسماء الحقول هي نفس
أسماء الحقول في النموذج،
وبالتالي فإنه في الواقع لا حفظ على النموذج نفسه.
لذلك بطريقة ما يحتوي النموذج على بيانات النموذج
التي جاءت من طلب المشاركة ومن ثم يحفظها.
هذا يحفظ النموذج
يضعه، ثم نقوم
بإعادة التوجيه مرة أخرى إلى عنوان URL للطلب.
هذا هو مقتضب جدا لي.
نحن سحب في بيانات المشاركة القديمة،
ونحن تحقق لمعرفة ما إذا كان سيئا، إذا كان سيئا،
ونحن نرسل النموذج مرة أخرى إلى
نفس القالب بالضبط
فعلنا ومن ثم حفظه إذا كان جيدا،
ومن ثم البوب إلى عنوان ورل النجاح.
هذا شيء جميل
ولكن تماما كما هو الحال في جانغو في كل وقت،
وهذا هو الشيء أكثر بكثير
للقيام به على الرغم من أن هذا هو السوبر موجزة.
إذا قمت بذلك بأي لغة أخرى تقريبًا،
فستصبح مثل 75 سطرًا من الشفرة،
وهنا لدينا 15 سطرًا من الشفرة.
ولكن اتضح في Django أن هناك
دائمًا طريقة أكثر إيجازًا للقيام بذلك.
لدينا عرض إنشاء عام.
يمكنك إلقاء نظرة على وثائق
هذا العرض إنشاء عام، django.views.generic.edit.
دعنا فقط نذهب ونبحث عن هذه الأشياء في جوجل.
أنا دائما مجرد وضع نقطة هنا وهذا عادة ما
يحصل لي الحق
في لأن هذه هي الحزمة الفعلية والطبقة داخل
الحزمة. أوه، لا
آسف كنت تعتقد أن ذلك كان اسم نطاق،
لذلك البحث لم ينجح.
ولكن الآن سأقول فقط Django،
شيء ما على الأقل
انها سوف تفعل مع البحث بالنسبة لي،
وجهات النظر التحرير العامة القفز إلى CreateView.
حتى تتمكن من قراءة كل هذه الأشياء،
عام CreateView في الواقع.
هل لدي إشارة إلى هذا؟
لذا ها أنت ذا ألقِ نظرة على ذلك
الآن، هذا تماما مثل
بعض وجهات النظر الأخرى التي ورثناها،
لديها طن من الوظائف فيها.
لذلك إذا كنت أرغب في إجراء AutoCreate،
فهذا هو كل ما يلزم.
الآن، AutoCreate و MakeCreate
لجميع المقاصد والأغراض،
تفعل الشيء نفسه بالضبط.
إذن ما يحدث في
AutoCreateView لأننا
نقوم بتوسيع CreateView، لدينا ثلاث بتات من البيانات الوصفية،
ونخبرها بالنموذج
الذي نريد استخدامه، وأي حقول من هذا النموذج نريده،
وأين يكون عنوان URL للنجاح.
ثم هذا يولد كل هذا الرمز.
لقد ورثنا كل تلك الشفرة
ستلاحظ أنه لا يوجد شيء ضمني
هنا باستثناء MakeForm.
الآن، ليس لدينا حتى لجعل نموذج للسيارات
لأن هذا الرمز هنا يبني النموذج.
ليس ذلك فحسب، ولكنه يستخدم هذا الاسم
Auto لاختيار القالب.
حتى إذا كنت تفعل auto_form،
لا بد لي من استخدام هذا.
أنا استخدم هذا، وهذا هو بلدي التمهيد الأساسي.
لا تقلقي كثيراً بشأن ذلك
لذلك يعرف اسم
القالب الذي سيستخدمه.
لا بد لي من إخباره بالقالب الذي يجب استخدامه هنا،
لأنه يستمد القالب،
auto_form.html هو القالب.
رائع جداً رائع جداً و رائع
لذلك يجد ذلك تلقائيا و success_url.
لذلك هذا هو كل ما هو مطلوب. في
الواقع، في هذا MakeCreate،
كان بإمكاني حذف كل هذا الرمز من هنا إلى هنا،
ولكن بدلاً من ذلك فقط قم بـ CreateView عن طريق توسيع CreateView.
لذلك أنا فقط أريكم هذا لأنني أريدكم أن
تروا ما الذي يجري حقاً
ولكن هذه ليست الطريقة التي تكتب بها شفرتك.
هذه هي الطريقة التي تكتب بها شفرتك.
حتى الآن، أريد أن أريكم
الطريقة الصعبة لإجراء تحديث.
إذن ما هو المستجدات؟ دعونا نلقي نظرة على التعليمات البرمجية.
لذلك دعونا نلقي نظرة على يجعل عرض.
التحديث هو الشيء الذي
يحدث عندما نذهب هنا
والتي سوف تذهب إلى MakeUpdate.
حتى هنا ماكيوبديت، وهنا urls.py. إنه هذا
أعني، ابحث عن تحديث المفتاح الأساسي،
والذي إذا نظرت
إلى الأسفل هنا، سيكون البحث عن تحديث واحد.
لذلك أنا ذاهب لتحديث تشيفي واحد.
يجب أن تقرأ البيانات القديمة، ويجب
أن تظهر لك،
ومن ثم دعونا تحديثها ومن ثم إرسالها التحقق،
بطبيعة الحال، عن أي أخطاء التحقق من الصحة.
ثم إعادة توجيهنا مرة أخرى إلى success_url.
لذلك إذا نظرنا إلى وجهات النظر،
ونحن في طريقنا إلى مرة أخرى
، تنذر، هناك طريقة أسهل بكثير للقيام بذلك.
لذلك قمنا بتعيين هذه المتغيرات أو success_url،
أي قالب نريده، والنموذج.
إذن لدينا طلب إستلام
لأنه في urls.py هناك هذا إنت: بك،
تم تمريرها في هذه القيمة بك.
الآن، هذا get_object_or_404 رائع حقا.
هذا get_object_or_404 (self.model pk = pk).
هذه هي المعلمة التي نمررها
pk يساوي ومن الشائع أن تكون نفس الاسم،
ولكن هذه معلمة get_object_or_404.
هذه الثانية هي المعلمة
التي تم استدعاؤها للحصول على لدينا.
النفس. نموذج، بطبيعة الحال، هو جعل.
Get_object_or_404 يتحقق أساسا لمعرفة ما إذا كان
، سأفعل هذا التحديث،
دعونا نذهب إلى يجعل، دعونا القيام بتحديث.
ما تفعله هو أنها تأخذ هذا الرقم،
وهذا ثلاثة هنا، السيارات/بحث/3/تحديث،
وانها استرداد البيانات القديمة.
الآن، ماذا يحدث إذا كان
لدي عن غير قصد رقم
غير موجود في قاعدة البيانات،
مثل 9،999، وأنا أفعل طلب الحصول على ذلك؟
أحصل على «الصفحة لم يتم العثور على 404.»
لذلك ما يحدث هنا هو بطريقة ما تقول، «مهلا،
تحميل هذا الكائن وإعطائه لي والمتغير
، وجعل، أو مجرد تفجير وإرسال خطأ 404.»
لذلك هذا يخبرك بما يحدث،
والذي يعرض لك فقط، «لا يوجد تطابق مع الاستعلام المعطى».
الآن، عموما ليس من المفترض أن تعطي هذه.
ثلاثة يعمل، ولذا فإنه لا تنفجر.
لذلك get_object_or_404 هو وسيلة لتحميل
البيانات القديمة ومن ثم
حماية باستخدام تلك البيانات، أو مجرد تفجير.
لذلك لا تذهب أبعد من ذلك في تلك المرحلة.
الآن، ثم نحن ذاهبون لجعل
نموذج ونحن في طريقنا لملء مع البيانات القديمة.
على سبيل المثال، ما هو المثال جعل.
إذن هذا هو الهدف
جعل MakeForm. هنا هو MakeForm.
جميع الحقول من النموذج
ترث من نموذج جعل.
ثم قم بتمريره إلى القالب make_form.html،
الذي نظرنا إليه للتو.
هذا النموذج يأتي، هذا كل ما نحتاجه.
هذا هو نظرة عامة جدا.
انها حقا لا تهتم كثيرا.
كل شيء مشفر إلى حد كبير في هذا النموذج،
وهو مشتق من النموذج.
ثم بالطبع، نكتب مجموعة من الأشياء
ونضرب «إرسال».
يفعل بالضبط نفس الشيء مثل إنشاء،
وأنه يعمل بشكل جيد.
أولا يجب أن تفعل الحصول على أو 404
لأننا نشر إلى الشيء مع المفتاح الأساسي.
نقوم بتحميله للتأكد من أن لدينا كائن لتحديثه.
ثم نقوم بإنشاء نموذج جديد
من قاعدة البيانات تلك ثم تغييره.
لذلك هذا هو مثل بيانات البداية،
ولكن بعد ذلك يغير ذلك إلى البيانات.
لذلك في هذه الحالة بالذات،
شفروليه هي القيمة القديمة في قاعدة البيانات.
إذا قلت Bowtie،
طلب آخر مختبر Bowtie،
وهذا سيبدأ شيفروليه ولكن في هذا الشكل
الكائن ثم سيكون Bowtie.
بالطبع، إذا كان غير صالح،
سنقوم بإرجاع رسالة خطأ هنا مرة أخرى.
إذا كان صحيحا، ونحن في طريقنا
لانقاذه وهكذا هذا القوس الجديد
سوف يتم انقاذه في هناك.
لذلك إذا نظرنا إلى صنعنا،
نرى أنه الآن Bowtie،
ونحن في طريقنا إلى إعادة توجيه إلى عنوان URL للنجاح.
الآن، في هذه المرحلة،
آمل أن
تتنبأ بما سيحدث بعد ذلك.
التحديث التلقائي، يمتد عرض التحديث،
عرض التحرير العام.
وتقول أي نموذج هو عليه،
والحقول التي تريدها،
وأين تذهب عندما يكون ناجحا.
ثم يفعل كل شيء هنا.
حرفيا، يمكن أن أذهب وأقول
نفس الكلمات بالضبط لجعل حذف،
وهو ما يحدث عندما تذهب في هنا
وتحذف ومن ثم لديك إلغاء،
هناك تأكيد حذف.
لم يتم اختيار اسم هذا القالب عشوائيا،
فإنه يجب أن يسمى confirm.delete،
نموذج confirm.delete.
ها أنت ذا كنت قد حصلت على رمز سرف.
يتم تسليمك صنع ككائن في هذا.
بحيث تنتج هذا الإخراج.
ليس هناك شكل في هذا
هناك فقط جعل التي يتم تحميلها بواسطة
الكائن أو 404 ثم يمر جعل في ويجعلها.
ثم عندما يحدث المنشور، فإنه يسترد ذلك.
إذا كان هناك، يقوم 404 مرة أخرى
بالتحقق من البيانات السيئة وحذفها،
ثم الانتقال إلى عنوان URL للنجاح.
لا يستغرق الأمر الكثير لتخمين ما سأقوم به بعد
ذلك، وهذا هو، إذا قمت بتوسيع عرض الحذف،
فستحصل على كل هذا الرمز مجانًا.
أنت فقط تخبر الحقول النموذجية
وأين تذهب للنجاح.
لذا فإن الأمر الرئيسي هو،
كما تقوم بواجبك المنزلي،
أنا متأكد من أن بعضكم سيقوم بنسخ
ولصق كل هذه الأشياء. هذا خطأ
يجب أن تكون MakeCreate و
MakeUpdate و MakeDelete قصيرة مثل AutoCreate و autoDete.
لأنك ستفعل
طرق عرض التحرير العامة هذه كثيرًا
وسنقوم بعمل CRUD مرارًا وتكرارًا،
ولا تريد حقًا كتابة 15 سطرًا من الشفرة.
هذا تكرار لا لزوم له، وقطع لا لزوم لها
ولصق وتغيير التعليمات البرمجية إذا
كنت يمكن أن تبقي الأمر بسيطة حقا.
حتى أتمكن من إنشاء مجموعة كاملة من
نماذج CRUD ووظيفة CRUD
مع التحقق من صحة نموذج مع
هذا الرمز ومن ثم ليس لدي حتى forms.py،
لدي فقط models.py.
حتى إذا كنت تفعل السيارات الخاصة بك،
وكنت أعتقد أنني ارتكبت
خطأ إذا أنا جعل forms.py.
لأنه إذا كنت مجرد استخدام هذا views.py بهذه الطريقة،
بدلا من جعل كل منهم تبدو وكأنها ماكيوبديت،
ثم كنت تسير لإنقاذ نفسك الكثير من
الوقت والطاقة وعلينا أن تعديل هذه الأشياء.
من الأسهل العثور
على جميع التغييرات ثم تعديلها.
لذلك هذا هو المشي من خلال نموذج التعليمات البرمجية للسيارات.
أنت ذاهب للقيام بمهمة على هذا،
ولكن لا مجرد نسخ كل شيء.
لقد قمت بإعداد هذا حتى أن
الوقت الذي تقضيه في فهم ما يحدث،
وخاصة في وجهات النظر.
عنوان URL هو فخرك فقط نسخ،
ونماذج تقوم
بنسخها فقط، وعناوين URL
التي ستقوم بنسخها فقط، ولكن المشاهدات لا
تنسخها فقط، ومعرفة ما يحدث حقًا والخروج بطريقة أسهل وأكثر إيجازًا للقيام بكل هذه الأشياء.
بدأت جانغو تبدو
جميلة حقا في هذه المرحلة.
لذلك آمل أن تكون قد وجدت هذا مفيدًا. نخبك