Вы находитесь на странице: 1из 342

Django documentation

https://docs.djangoproject.com/en/3.1/
https://docs.djangoproject.com/en/3.1/contents/
Testing Django very important
https://www.valentinog.com/blog/testing-django/
best easy explain Django: ‫افضل واسهل شرح‬
https://developer.mozilla.org/en-US/docs/Learn/Server-
side/Django/Forms
Elsafy Hegazy
‫ | شبكة علوم‬OLOMWEB
Muhammed Essa
Python
Python
https://www.fullstackpython.com/django.html (resources)
‫محمد شوشان‬
CodingMirror
Mahmoud Ahmed - ‫بايثون بالعربي‬
https://www.linkedin.com/learning/advanced-web-
development-with-django
https://www.charactercountonline.com/

Make a Location-Based Web App With


Django and GeoDjango
https://realpython.com/courses/make-location-based-web-
app-django-and-geodjango/
LinkdeIN
PluralSight

1. Learning Django [LinkedIn]


2. Advanced Web Development with Django [LinkedIn]
3. Building a Personal Portfolio with Django [LinkedIn]
4. Django Fundamentals [PluralSight]
5. Code School: Digging into Django [PluralSight]
6. Web Development with Django and AngularJS
[PluralSight]

Michael Herman \
https://www.quora.com/profile/Michael-Herman-3
Tango with Django

As a web developer, what do I need to learn after


Django?

How comfortable are you with Django? What have you


built with it? If you’re still new to the framework, I would
focus on building a larger project with it. Some areas to
explore:

1. Developing a RESTful API with Django REST


Framework
2. Practicing Test-Driven Development (TDD) with
pytest
3. Containerizing Django and Postgres inside Docker
containers
4. Adding continuous integration (with a service like
CircleCI, GitLab CI, or GitHub Actions) to test (with
pytest) and lint (with flake8 and black) your code
5. Deploying your app to Heroku, DigitalOcean, or an
AWS EC2 instance
6. Documenting the AP with Swagger/OpenAPI
You’ll learn a lot more if you explore those topics in the
context of building a larger Django project. Think about
some web app that you’d like to build — and build it!

Once you have an API set up, you can turn your attention
to the front-end. Learn a bit of JavaScript and pick up a
front-end framework like Vue or React. Containerize it with
Docker separately from your Django app. Create the static
files for deployment and deploy it to S3.

Along with languages, it’s always good to learn new


frameworks. When it comes to Django, since it is super
opinionated, you’ll learn the Django way of doing things.
Balance that out by picking up Flask. It’s a lower-level
framework so you will have to do more to get an app up
and running. Maybe you’ll find that more interesting or
more your style. Or maybe you’ll come to appreciate
Django even more.

For more on this, check out Django vs. Flask: Which


Framework to Choose.


If you’re looking for some advanced Django material,
check out these books and courses:
1. Django for APIs
2. Two Scoops of Django 3.x: Best Practices for the
Django Web Framework
3. Speed Up Your Django Tests - Adam Johnson
4. Developing a RESTful API with Django, Django
REST Framework, Docker, and Pytest
5. Developing a Real-Time Rideshare App with
Django Channels and React

What are some good advanced Django (>=2.2)


tutorials?

TestDriven.io focuses on teaching how real-world


applications are built, using Test-Driven Development
(TDD).
The blog is full of intermediate to advanced level Django
tutorials (all >= Django version 2.2). There’s also three
advanced Django courses:
1. Test-Driven Development with Django, Django
REST Framework, and Docker
2. Developing a Real-Time Taxi App with Django
Channels and Angular
3. Developing a Real-Time Taxi App with Django
Channels and React
All three courses not only show how to develop the
applications, but they dive into the larger environment as
well, detailing a workflow for building a modern, well-
tested, CI/CD-enabled applications.
Note: I am the founder and author of the first course
mentioned above
I’d also check out this three-part Django project
optimization guide that covers a wide range of advanced
topics:

1. Profiling and Django settings


2. Working with database
3. Caching
Which “remote first” tech companies are hiring Python
web developers and designers?

“Remote-first” is a bit harder to find than “remote-ok”, but


here’s a short list…

 Zapier
 Catchafire
 Compose
 Crunch.io
 Brane
 My company, Real Python, is remote-first. Contact
us!
 Check out RemoteOK’s Python jobs section. Based
on the jobs there, you can probably figure out which
companies are remote-first.

Developing a Real-Time Taxi App with Django Channels


and React

Part1+2+3 40$

https://testdriven.io/courses/taxi-react/
Tools and Technologies: (Asynchronous) Python, Django,
Django REST Framework, Django Channels, Redis,
PostgreSQL, JSON Web Tokens (JWTs), pytest
Tools and Technologies: React, Cypress, Docker, React
Hooks
Tools and Technologies: (Asynchronous) Python, Django,
Django Channels, React, Cypress, WebSockets, Google
Maps, Geolocation, React Hooks
Test-Driven Development with Python, Flask, and Docker

Part 1

In this first part, you'll learn how to develop a RESTful


API with Python, the Flask web framework, Flask-RESTX,
and Postgres. You'll containerize Flask and Postgres to run
inside Docker containers and configure Pytest in order to
practice Test-Driven Development (TDD).

Part 2

In the second part, you'll start by


deploying Flask, Gunicorn,
and Postgres to Heroku with Docker. You'll then continue
building the out the RESTful API as you
write unit and integration tests. Finally, we'll look at how
to document the API with Swagger.
https://realpython.com/learning-paths/become-python-web-
developer/
https://realpython.com/courses/make-location-based-web-
app-django-and-geodjango/
Udemy Courses:

Build a Backend REST API with Python & Django -


Beginner

Finally create that App + fully-functioning user database in


this crash course to building a REST API

Build a Backend REST API with Python & Django -


Advanced

Create an advanced REST API with Python, Django REST


Framework and Docker using Test Driven Development
(TDD)

Python eCommerce | Build a Django eCommerce Web


Application

Tweetme | Build a Twitter-like app step by step with


Django

Learn Django 1.10, jQuery, and Bootstrap step by step by


building a real project that works like Twitter!
Build a User Authentication Web App With Python and
Django

Learn To Create a User Authentication System in Django to


Register Users, Log In, Log Out, Edit Profiles, and More!

Python Django Web Development: To-Do App

Learn Database Driven Web Development With Django


and Python!

Build a Stock Market Web App With Python and


Django

Learn Database Driven Web Development With Django


and Python!

Advanced Web Development with Django linkedin


https://www.linkedin.com/learning/advanced-web-
development-with-django
https://www.udemy.com/course/advanced-web-development-
with-django/
Advanced Web Development in Python with
Django
by Andrew Pinkham

https://www.oreilly.com/library/view/advanced-web-
development/9780136552949/
Learn How To

 Write tests for Django


 Implement authentication in Django
 Optimize Django performance
 Enhance applications
 Enable user media and processing with a Celery queue
 Utilize asynchronous Python

Skills:
 Website design using HTML, CSS, Javascript
 CSS framework like bootstrap
 Javascript that is either ES6 or later.
 Understanding on how to use a database like Postgres (prefered choice), SQLite, MongoDB,
MySQL
 Use of Object Relational Mapping (ORM) like Django's ORM or SQLAlchemey
 Learning how to use a templating engine like Django template engine, Jinja2
 Learn to use production Web servers like Apache & Nginx
 Consumption of API like Sendgrid, Twilio, Stripe, Okata or find it in API marketplace
like RapidAPI
 Selecting & using a WSGI server like Gunicorn, Mob_WSGI or uWSGI
 How to use a testing framework like Pytest & Unittest to write test cases in Django.
 Using a text editor like VS Code or IDE like PyCharm
 Setup virtual environment & install packages
 Design skills like using Figma or Adobe Xd to create prototypes.
 Markdown to write documentation or creates issues in projects.
Become a Django Developer
https://www.linkedin.com/learning/paths/become-a-django-
developer
4 Very important Book
Django Admin Cookbook
https://books.agiliq.com/projects/django-admin-
cookbook/en/latest/
Django ORM Cookbook
https://books.agiliq.com/projects/django-orm-
cookbook/en/latest/
Building APIs with Django and Django Rest
Framework
https://books.agiliq.com/projects/django-api-polls-
tutorial/en/latest/
Building Multi Tenant Applications with
Django
https://books.agiliq.com/projects/django-multi-
tenant/en/latest/
Mahmoud Ahmed - ‫بايثون بالعربي‬
٣ ‫ الدليل الشامل لتعلم دجانجو‬- ٠١
‫‪ - ٠٢‬تحليل المشروع الخاص بالكورس | دجانجو ‪٣‬‬

‫‪https://colorlib.com/wp/cat/job-board/‬‬
Virtuallenv -p python3.8 Job-Board

‫ لفولد عندي اسمو‬Job_Board

‫وبعدين بتدخل جوا الملف‬


Mkdir src
‫ واحط فيه تيمبلت تبعتي اللي حملتها من موقع‬colorlib

Change folder name >> Fronted-Template


Create file >> outline.md
Open jobs.html

Take notes from this template as summeery on outline.md


‫عن طريق هاد المعلمومات اللي جمعتها من صفحة اللي فوق علشان اعرف‬
‫اصمم المودل تعبي‬
+ home and login

‫ انشاء مشروع دجانجو جديد | مشروع علي ال‬- ٠٣ Github

Open termina from folder SRC

Activated for your virtual environment

‫ بدو يرفع المشروع على‬Github


Then create repository
‫وهيك بكون ارتفع على قيت هب‬
‫‪Install Django‬‬

‫بسبب انو مربط كل اكواد المشاريع عندو بهيك اسم علشان لمن ينقل حاجه من‬
‫مكان لمكان ما يتسبب باي مشاكل عندو‬
‫ملفات هدول اللي موجودات في داخل بدك اياهم يكون برا في الخارج معك بتعمل‬
‫دوت في الكود‬

‫علشان اتاكد انو ديجانقو شغال‬


‫حتالقي ملف هادا ظهر‬

‫بدنا نرفع المشروع على قيت هب‬


‫‪+10 .. mean upload 10 Files‬‬
‫‪ - ٠٤‬كيفيه عمل دجانجو من الداخل | دجانجو ‪٣‬‬

‫فكرتها لو انت عميل مشروع لعميل قبل سنة سنتين بمكاتب ونسخة بتختلف عن‬
‫اللي بتتشغل عليه هلقيت وكنت شغال عىل مكتبات قديمة وبينفعش يكون على‬
‫جهاز تبعك اصدار اكتر من واحد لكل مكتبة‬
‫وفكرتها اني بشغل اكتر من اصدار لبايثون او اكتر من اصدار الي مكتبة‬
‫ليش كل ما شغل بتالقيني بفعلها علشان اتعامل جوات المشروع براحتي‬
‫طيب كيف بدي اعرف شو المكتبات الللي موجودة في فيرشوال انفيرومنت تبعتي‬

‫‪Pip freeze‬‬
‫داخلها بحدد اصدار معين لبايثون وايضا الصدار المكاتب اللي مودوة بداخلها‬
‫بدي اكريت يعني انشأ فيرتشوال انفيرومنت باالسم معين ويشتغل على نسخة‬
‫بايثوت معينة‬
‫‪Firstly,Create‬‬

‫‪Secondly,activate‬‬
‫جواها بقدر اسطب اللي عاوزو واللي بدي اياه من المكتبات‬
‫‪Pip install‬‬
‫‪Linux >> folder /bin/ windows >> ./scripts/‬‬
‫‪Very important note that need when create virtual‬‬
‫‪environment‬‬
‫وبطلع المكتبات اللي كنت شغالها فيها داخل الفيورتشال انفيرومنت في ملف اسمو‬
‫‪Requirements.txt‬‬

‫ديجانفو من جوا متكون من حاجتين‬


‫‪Project and app‬‬
‫يعني كل واحد فيهم بادي وظييفة واحدا ‪Each app / function‬‬
App >> home login contact >> design outline.md
‫ كل واحد منهم‬App
‫وحتالقي فولد جواتو فايلز‬
‫وشو هادي االملفات‪ l‬ولشو لزمتها‬
‫علشان يعملك بكجنق للفولدر كلو >> ‪_init__py‬‬
‫‪Setting‬‬
‫‪url‬‬

‫? ‪How Django work‬‬


‫اللي بتطلب المعلومات >> ‪View‬‬
‫طلبت معلومات شخص معين راحت للمودل راح المودل بحث عن في داتابيز‬
‫ورجعتلو اياه وبعدين رجعو لليفيوز بتكون راجع تكست وانت عاوز تعرضها‬
‫بشكل حلو فبتعتها للفرونت اللي هو تيمبليت‬

‫خاص بالمسار اللي بدك تروح فيه ‪url‬‬


‫‪ template‬هي‬
‫تبعتي اللي حملتها من الموقع‬
‫وجمعت منها داتا وعاوز ابدا اصمم هلقيت المشروع ومحتاج داتا هادي تنحفظ‬
‫في داتا بيز يعني في المودل‬
Create apps based on your Design
‫‪Uplaod for your Github project‬‬

‫روح على القيت هب حتشوف تعديالت اللي بتصير بالكومنت ماذا يحدث‬
‫هلقيت داتا تبعتبي بدي ابدا احطها في داتا بيز‬
‫‪ - ٠٥‬تصميم الداتابيز الخاصه بالمشروع الجزء االول | دجانجو ‪٣‬‬

‫بتروح في االول الى االعدادات اللي فيها كل اعدادات عن امشروع‬

‫لو بدك تغير داتا بيز االفتراضي اللي بكون شغال فيه ديجانقو‬
‫‪Sqlite3‬‬
Open this link about connect with database

‫ بضيف‬apps
‫تبعتك‬
‫لماذا يتم اضفتهم في ملف االعدادات‬
‫النو سيرفر اول ما يشتغل بروح عىل ملف االعدادات فلو مش حاطط االاابز‬
‫تبعتك ديجانقو مش حيشوفو نهائي‬
Give you note:

Open DB Browser for SQLITe

Open sqlite.db file >> that is created by default


‫محتاج انك طبق هذه االعدادات على داتابيز‬

‫فعلشان هيك الزم تكتب هذا االمر‬


‫روح اعمل تحطيث لداتا بيز حتالقي كل الجدوال‬
‫طيب هدول موجودين فين‬
‫اعمل تشغيل لسيرفر‬

‫‪/admin‬‬
‫بدك تامن حالك من ناحية سيكيورتي مهم جدا فبتعمل االتي‬

‫‪Create superuser‬‬
Admin control panel ( ‫جاهزة بالكامل‬
If you need to create users with rules or specific permission
Create Group

‫هادي المعلمومات تبعتي اللي بدي اخزنها في داتابيز في المودلز‬


‫هلقيت بدنا نبدا في المودلز‬
‫كالس هادي بتكافىء جدول في داتا بيز‬

‫جداول في ديجانقو بتكافىئ كالس‬


‫واالعمدة فيلد‬
‫لجداوال واالعمدة ‪ SQL >> Create‬يعني انت مش محتاج تفتح‬
‫خلص انت بتعملهم من جوا الديجانقو‬
‫كل اللي بتعملو في اس قي ال ممكن تعملو في ديجانقو‬
‫بعمل رفرش في دااتا بيز ولسا انا مش شايفو وينو ؟‬

‫حيروح يحول الكود لكويري تتنفذ على داتابيز‬

‫قلك بنفع تنفذو على داتا بيز‬

‫روح افتح داتابيز حتالفيه‬


11:19
‫شوف انت لمن نفذت االمر انشأ ملف اسمو‬
0001_initial.py
Folder migrations inside ( App >> Job Folder)
‫‪Open it‬‬
‫حتالقي الكود اللي حتنفذ الى داتابيز‬
‫‪ App‬بضيف منو ادمن بتع‬
‫في االدمن‬

‫‪ APP‬حتالقي‬
‫تبعي حتالقي ظهر في االدمن‬
‫‪ html widget‬تذكر انو ديجانقو بعطيم هدول تالت صفات‪ l‬كما هو موضح قصة‬
‫‪ - ٠٦‬تصميم الداتابيز الخاصه بالمشروع الجزء الثاني | دجانجو ‪٣‬‬

‫‪Google >> dijnago model fields‬‬

‫‪Open documentation‬‬
Example CharFiled >> string with small size
Large string >> TextFiled
‫بدك يظهرلك ففقط االحتيارين للوظيفة‬

‫اي تعديل بصير في المودلز الزم نعمل االمر التالي الخاص بعملية الميقراشن‬
‫‪ App Job‬حتالقيه انشا ملف جديد جو مجلد تبع الميقراشن الخاص ب‬
‫معناتو انشا فيلد جديد خاص بنوع الوظيفة‬
Add new filed >> description Text ( 1000 Character)

‫ بدك اطبق تعديالت اللي تمت في‬model


‫وبتقدر تصغرو وتكبرو زي م بدك‬
‫تعني اخر مرة اتعدلت >> ‪Auto now‬‬

‫عاوز اطبق تعديالت اللي في اموديلز على داتابيز‬


‫? ‪Job object‬‬

‫معناتو اني مخد نسخه من لكالس تبع الجوب‬


‫ولكن انا محتاج تظهرلي العنوان تبع الزظيفة‬
Refresh

‫ولكن فيه حاجه مش مبينه زي‬


Published_at

Open sqlite DB >> ‫حتالقيها‬


‫‪ auto_now‬بسبب‬
‫لحالو ديجانقو كل ما تنشأ وظيفة حيطعطيه الوقت الذي انشات فيه‬
‫تنساش بعد ما تخلص ترفع كل حاجه على قيت هب‬

‫‪ - ٠٧‬العالقات الخاصه بالداتابيز في دجانجو | دجانجو ‪٣‬‬

‫هناك فيه ‪ 3‬انواع من العالقات‪ l‬في ديجانقو‬


‫‪Django model relationship‬‬
‫‪Examples‬‬

‫هلقيت كل وظيفة الها كاتيجوري‬

‫وظيفة موجود في كيتجوري واحدة فقط اما الكاتيجوري مع اكتر من وظيفة في‬
‫بتكون هادي العالقة‬

‫افهم هدول منيح‬


‫‪Single quotation if your model write after it‬‬
‫اما لو كن تكاتبو قبل عادي بدون سينجل كوتاشن‬
‫=‪ on_delete‬معناتو لو مسحت الكتوجري دي امسح الوظايف اللي جواها‬
‫‪models.CASCADE‬‬
‫فيه مشكلة ظهرت ؟‬
‫سبب النو مفش كاتيجوري اسمو واحد اللي هي القيمة االتفارضية اللي انت‬
‫اعطيتو اياها لمن سالك‬
‫هلقيت اعمل كومنت على تبع الفورن كي‬
‫وشغل المودل علشان يعملك يضيفلك لكالس تبع الكاتجوري‬

‫دخلت على االدمن مش حتالقيها موجودة‬


‫علشان لسا انا مضفتهاش في االدمن‬
Uncomment
‫انا خلصت‪ l‬هلقيت عاوز اعرض هادي داتا لليوزر‬
‫‪ View‬عمل دالة بتعرض الوظاف وحدا بتجيب تفاصيل تبعت الوظيفة‬

‫لتذكير كيف ديجانقو شغال مش في االول بروح للمسار تبعك‬


‫مسار االساسي تبعي >> ‪URl‬‬

‫عاوز اربط دالتين تبعت الفيو بالمسار تبعهم‬


‫بتروح جوا‬
‫‪Job Folder > >Create urls.py‬‬
‫عنا بقوكل تالت طرق لربط المسار في الفيووز‬
‫تستخدم لربط يو ار ال فرعي >> ‪Include‬‬
Django url path

‫ بستدخمها علشان تجنب استخدام‬requalr expression r


‫معناتو انو ملف فيوز وي ار ال موجودين في نفس المسار >> ‪. dot‬‬
‫وبتستدعي دوال من الفيوز دالة خاص بعرض الوظايف ودالة االخرى الخصة‬
‫بعرض تفاصيل الوظيفة‬
‫بنربط كل مسار بالفيوز الخاص به‬
url >> reach main url ( project ) >> url (jobs) >> path (url)
based on your Views
‫اللي عامل انكلود لهادا الملف‬

‫وبدي اعطي كل واحد مسار علشان افرق بينهم‬


‫‪ ID‬بدي اترجعلي قيمة انتجر من‬

‫والزم استخدمها من الفيو علشان لمن افلتر اعرف اجيبلك الوظيفة اللي بدك اياها‬
‫بزبط‬

‫حروح هيك لكل الوظايف >> ‪/job‬‬


‫اما‬
‫هيك بروح لوظيفة معينة >> ‪/1‬‬
‫خلينا انضيف تعيالت على قيت هب‬
‫في دجانجو | دجانجو ‪ - ٠٨ views ٣‬كيفيه التعامل مع ال‬
‫ممكن بدل استخدام الدوال في الفيوز ممكن عن طريق كالس باستخدام‬
‫‪Class based View‬‬

‫من الفيوز بدم تستدعي دالة لعرض كل الوظايف‬


‫ كانك كاتب هيك كود‬SQL >> return all Jobs select *

Google >> to understand it >> Django model QuerySet


‫بتفاصيل ‪ SQL‬بيجبلك وبشرحلك كيف الكود بتكتبو بتحول لل‬
‫‪ Documentation‬مهم جدا‬
‫اهال عالقة باللي بدو يرجع من المودل مع داتابيز >> ‪Render() method‬‬
‫‪ Template‬وبدو يروح على‬
‫اي فيو الزم ترحجع مع ريندر هدول تالت الحجات‬

‫>> ‪Request‬‬
‫صفحة اللي بدك تعرض فيها >> ‪Html template‬‬
‫جوا الفولد تبع الجوب‬
Create new folder >> templates >> inside it create new foler
>> job >> ‫وجواتها هادي بنشأ صفحات االت تي ام ال تبعتي‬

‫ صفحتين‬HTML
‫هدول صفحات االت تي ام ال اللي عملتهم بدك ضفيهم في مكان‬
‫اللي في فيوز )(‪ render‬الموجود في >> ‪Html template‬‬

‫‪ context‬هلقيت شو هو‬

‫‪ jobs‬هادا االسم‬
‫بستخدمو فين‬
‫‪ jobs‬المتغير اللي برجعو من‬
‫بحطو في صفحة االت تي ام ال بهذا الشكل‬
‫}}{{‬

‫‪Django template language‬‬

‫‪ HTML‬طيب كيف دبك تسغل كود البايثون داخل صفحة‬


‫}‪{% %‬‬
‫}}{{‬

‫ولكن مع مالحظة اي حاجه بتفحتها الزم تقفلها‬


‫لو ضفت وظيفة تانية‬

‫‪Very important note‬‬


‫‪Context‬يعني‬
‫‪ Template‬االسم الي بتعامل فيه داخل‬
‫انت اللي مرجعها من داتا بيز >> ‪Dic ( key, value) value‬‬
‫‪ key‬بتصير تتعامل فيها عن طريق‬
‫‪ templates‬مع‬
‫}} {{‬
‫وعلشان تستتخدم كود البايثون في اداخل‬
‫}‪{% %‬‬
‫وما تسنى اللي بتفتحو الزم تسكرو‬

‫هلقيت بدنا نستغل نرجع للوظيفة الوحدا‬


‫)(‪Get‬‬
‫‪ ID‬هلقيت اعمل ريفرش لصفحة ب‬
Very important to understand how to use Title
‫‪ - ٠٩ static files & templates‬كيفيه التعامل مع ال‬
‫في دجانجو | دجانجو ‪٣‬‬
Static files
Media files
‫بدنا نوضح الفرق بينهم‬
‫‪ settings‬هادا بروح ضياف عادات لستاتيك تبعتك في‬
Media:
Fronted -Template >> ‫بتروح عليه بتحدد ملفاتك لستاتيك‬
CSS >> fonts >> JS >> Img
‫نفسه ‪ src‬بتروح جوا‬
‫‪Create >> static Folder‬‬

‫وبتروح تحط فيه الملفات لتساتيك‬

‫بروح هلقيت لصفحات‪ l‬االتش تي ام ال تبعون الوظايف‬


‫وبعدين بحطهم هان >> ‪App ( job ) >> Templates >> job‬‬

‫‪ delete‬بتعمل‬
‫للي كنت بتجرب عليهم وبتسمي التش تي امل ال باسمائهم علشان هلقيت تشتغل‬
‫على تيمبلت بشكل مباشر‬
‫فيه خطأ بسبب االختالف في االصدارات‬

‫‪Run server‬‬
‫‪ fronted‬حتالقي صفحة تبعت‬
‫بايظه خالص‬
‫الني مربطش اعدادات لستاتيك بالصفحات لسا‬

‫وهي مثال اعمللتها تربيطا مع ديجانقو‬


‫‪Templates syntax error‬‬

‫انت بتستخم لستاتيك بس انسيت تعمللها‬


‫‪Load or register‬‬
‫لحل مشكلة بروح على صفحة اتش تي ام ال وبرح اول اول حاجة وبضيف‬
‫} ‪{% load static‬‬

‫حتالقي هلقيت جزء ظهر‬


‫‪ inspect‬وبرتوح تعمل‬
‫ملينا اخطاء‬

‫كل شوي للتحتها وهيك بتكون علمتهم ‪Ctld + d >> select‬‬


‫لسا دنيا نزبطتش النو لسا ما ضفنا جافا سكربت‬

‫‪Ctrl + D‬‬
‫اعملت ؤفريش بس لسا شكل ما ظهرش‬
‫ناسيين هادي‬
‫ظهر الموقع‬

‫مش محتاج اضلن اعيد كل شغل اللي اشتغلتو على صفحات‪ l‬الت تي ام ال‬
‫بدي اخليها تورثو من صفحة اللرئيسية اللي اشتغلت عليها‬
‫في كل صفحات اللي عندي بعد كدا‬
‫‪ -١٠‬كيفيه التعامل مع الصور وطرق حفظها في دجانجو |‬
‫دجانجو ‪٣‬‬
‫لو فتحت صفحة الخاصة باتفصيل تبعت الوظيفة حتلقيها لسا بايظه علشان لسا ما‬
‫ربطت لستاتيك تبعها‬
‫بدل ما اقعد انسخم بصير اورثهم‬
‫‪ job‬برا‬
‫‪Create new folder >> templates‬‬
‫بقوم ناسخ صفحة اللي انا اعملتها االساسية‬
‫وبروح جوا المجلد تبع تيمبلتس‬
‫بعمل ملف بسميه‬
‫‪Base.html‬‬
‫وبحط فيه الكود االساسي علشان اصير اورثو‬
‫سييبو ما هو في كل صفحات ثابت ‪Header‬‬
‫هدول محتاج انا اشلهم‬
‫‪ Block body‬واعوض بدالهم ب‬

‫‪ job‬هلقيت برجع لملفا االتش تي ام ال تبع‬


‫‪ Base‬وبشيل كل حاجه ممكن تورثها من‬
‫‪ Base‬محتاج هلقيت اعطيها اللي ناقصها من‬
‫‪ block body‬وبحط اللي محتاجو للصفحة بين‬
‫‪ setting‬انت اتاكد انك تايمبلت ضايفها في‬
‫علشان يوخدها من الفولد تبعت التايبملت اللي موجود في الخارج‬
‫حتالقيها ظهرت صفجة بدون مشاكل‬

‫وبروح هلقيت بزبط باقي صفحات‬


/1 >> open without any problem ( job details.html)

‫محتاج احط للجوب صورة‬


‫وين من المودل‬
‫ما زال عدلت في المودل انت محتاج تعمل الميقراشن‬
‫اظهرلك مشكلة‬
Run this command
‫‪ settings‬بتروح على‬
‫‪ media‬بتشوفو ليش ما عمل فولدر للميديا‬
‫هلقيت لو رحت بعد ما عملت‬
‫‪Run server‬‬
‫صورة محفوظة في ملف ميديا‬

‫‪ customize image name‬لو عايز وانت تعمل ابلود تغير اسم صورة‬
‫ححعمل دالة الها حتوخد منك حاجتين االنستانس اللي هو الوبجيكت اللي بتعملو‬
‫ابلود واسم صورة‬
‫بدي اخلي دالة دي هي تتولى مسؤولية رفع الصورة‬

‫جبت هيك اسم صورة لوحاد واالكستنشن لوحده‬


Create folder ( ID of instance )
This is advance note

Remove media folder >> admin >> upload image


%s/%s >> string formatting python

Remove media >> refresh after upload image


‫‪Per ID‬‬

‫بس ال يفضل انك تعمل لكل وحدا فيهم مجلد‬


‫يفضل باالرقام النو بتكون عملية بحث وفلتر بشكل اسرع‬

‫في دجانجو | دجانجو ‪ - ١١ frontend ٣‬التعامل مع ال‬


‫عاوز ارجع المعلومات هادي من داتابيز واعرضه في صفحات ات تي ام ال‬
‫‪ inspect‬روح اعمل‬
‫على اي وظيفة‬
‫‪ DIV‬علشان احدد‬

‫عاوز امسح كل هدول واسيب وحدا بس‬


‫اعمل ريفرش مش حتالقي اال وظيفة وحدا‬

‫بدنا نعمل لوب على الوظايف‬


‫اعمل ريفرش حتالقي ظهر الوظيفتين‬

‫بدي هلقيت اخليها توخد االسم الوظيفة‬


‫بدي ازبط اخليه يعرض الصورة‬
‫‪Very important note‬‬
‫بدي اياه كمان يبين الي الوظيفة فل تايم وال بارت تايم‬
‫بدي ازبط التاريخ‬
‫‪Django template date format‬‬

‫علشان عاوز اعرض تاريخ بشكل محدد‬


Very important note : how to return data with specific
‫عاوز هلقيت لمن اضغط على اسم الوظيفة يعطيني تفاصيل تبعتها‬
‫‪ ID‬ما ادخلش انا مباشرة ب‬
‫بتروح تحدد اسم الوظيفة داخل تيمبلت ات تي امل ال تبع الكود‬
‫‪ url‬بتةرح بتشوف مسار‬
‫اللي بدك تعطيه اياه‬
‫هلقيت بس انا عاوز ارةح لوظيفة واحدة فقط‬
‫كلو ‪ url‬محتاج اعرف طريق‬
‫من االساسي للفرعي‬
‫‪ url >> name‬بدك تعطي‬
‫علشان لمن تستدعيه او تستخدمو‬

‫‪ url‬وبعد هيك عاوز اروح‬


‫الفرعي تبع تفاصيل‬

‫االساسي بتمسى اسمو ب ‪url‬‬


‫‪Namesapce‬‬
‫الفرعي ‪ url‬بينما‬
‫‪ name‬بتسمى ب‬

‫‪ url‬اسال نفسك سؤال وانت بتربط ب‬


‫تبعك بيوخد باميتر وال لء ‪ url‬انو‬

‫‪ ID‬علشان لمن يفتحلك الوظيفة يبعتلك ب‬


‫‪Pass ID when click‬‬
‫‪Very important to understand it >> syntax write‬‬
‫جابلي مشكلة‬

‫االلي انت بنيته ‪ App name‬بتعطيه‬


‫ادخل عىل الوظيفة حتالقيق االمور تمام‬

‫‪ inspect‬لو عملت‬
‫على تايتل حتالقي‬
‫مربوط فيه ‪ID‬‬
‫‪ details‬بدي اعدل االسم تبع اوظيفة داخل صفحة‬

‫‪ context‬انا مرجعها من‬


‫‪ job‬باسم‬
‫كمان تعديالت‬
‫‪ job summery‬بدك تعدل في القائمة اللي على جنب اللي فيها‬
‫بدنا انعدل هادي عدد الوظايف‬
Search >> Count
Django template filer count
Very important note: to count number of jons
‫ التعامل مع ال‬- ١٢ pagination ٣ ‫في دجانجو | دجانجو‬
‫بدي في كل صفحة اكم وظيفة يعرضلي‬
‫صفحة اللي حترجعو الك‬

‫حلو تمام بس كيف بدي اروح لصفحات تانية فازم اضيفها في‬
‫‪HTML‬‬
‫علشان نعرض في صحفحات‪ l‬تانية‬
‫كل شغلنا حيكونفي المنطقة هاد‬
‫حتالقي زر هنا اختلف علشان فصفحة االوى ظهرلك زر اللي خاص بالصفحة‬
‫تانية‬

‫ولكن لو ضغطت عليه حتالقيه مش شغال‬


‫الحل انو احنا بدنا نعمل لوووب‬
‫ عاوز افعل هلقيت‬url
‫الخاص بكل صفحة‬
Revision from documentation
‫ولكن لسا فيه ضايل مشكلة‬
‫الها عالقة بالشرط اللي عندك‬
‫في دجانجو | ‪ url‬وظبط ال ‪ - ١٣ slug‬كيفيه التعامل مع ال‬
‫دجانجو ‪٣‬‬
‫‪ url after slash /‬علشان يظهلي اسم الوظيفة في‬
‫‪ slug‬يعني انا بربط ل‬
‫‪ title‬ب‬
‫ما تنسى علشان عدلت على مودلز ما تعمل‬
‫‪Migration‬‬
‫روح على لوحة تحكم حتالقي‬

‫‪ slug‬انا محتاج هلقيت لمن اعطيه العنوان يوخدو لل‬


‫لمن اعمل حفظ‬
‫‪ override on main save process that exist on model‬بدي اعمل‬
‫فبدي اعمل دالة لسيف داخل المودلز‬
‫‪Very important note:‬‬
‫روح على لوحة تحكم واعطيه اسم الوظيفة اوعمل سيف حتالقي‬
‫‪Slug‬‬
‫اخد اسم الوظيفة‬
‫‪ slug‬ولكن بدي يعمل سالش بين الكملمات باستخدام دالة من‬
‫‪Slugify‬‬

‫‪ slug‬بدي هلقيت استخدم‬


‫تبعي ‪ url‬في‬
‫ فبروح هلقيت على‬url >> pass instead of ID >> Slug

‫فيه مشكلة لسا‬


Slug with HTML
‫انا متاج سلق بدل من االي دي‬
‫اضغط على الوظيفة هليقت االمور تمام‬

‫ وهذا افضل لل‬SEO


‫ يعني تعديل علشان يتم‬slug
‫تم بهذا الشكل‬
Very important note:
Slug on model >> to save from admin panel with DB and link
with title
Then make save override function on model to take title for
slug
Then Go to view >> pass slug and Filter with it
Then Go to URL >> pass Slug(string)
Then Go to HTML >> instead send with ID pass Slug
‫ ضايل فقط مشكلة فهذا سطر لسا علشان ببعت ب‬ID
‫ مش ب‬Slug
‫في دجانجو | دجانجو ‪ - ١٤ form ٣‬كيفيه التعامل مع ال‬
‫بدي اعبي طلب تقديم على وظيفة‬
‫‪ model‬بدي اعمل‬
‫خاص بالناس اللي بدها تقدم على الوظيفة‬
‫هيك جهونا الجزء الخاص بالمودل اللي هو بدو يتعامل مع داتابيز‬
‫الخاص فيه __‪ __Str‬وبتعطيه‬

‫وما تنسى ما زال عدلت على المودل تعمل‬


‫‪Migration‬‬

‫‪ admin‬وبترح هلقيت بضيفها على لوحة تحكم في‬


‫‪ Forms‬علشان تعامل معها في الموقع الزم اتعامل مع‬
‫انسيت تحدد نوع اعالفقة ومع مين مربوط من الجدوال‬
‫يعني هلقيت انت لو قدمت على وظيفة مفروض يكون مربط بالوظايف شو‬
‫حتكون العالقة‬

‫بعد ما تعمل ميقرات للتغيرات االي صارت في المودل‬


‫روح على االدمن حتالقي بجيبلك شو الواظيف اللي الزم تقدم عليهم في الكنترول‬
‫‪Forms:‬‬
‫حلو بالفورمس انها هي داتا الموجود بالفورم هي االي بتبعتها‬
‫وبتعبتها عن طريق حاجتين‬
‫داتا بتكون مبعوته ولكن ببتظهرش في االرسال يعني بتكون مخفية ‪POST ::‬‬
‫لوكن هان بتكون ظاهرة ‪GET:‬‬
‫‪ POST‬لمن تقدم وبتعت بيناات الفورم‬
‫‪ GET‬بينما لمن تعمل فلتر علشان تظهر بيانات بتعمل‬
‫‪POST Data from FORM >> Django >> Save DB‬‬

‫)‪ App ( job‬بتروح جوا‬


‫بتنشأ ملف خاص بالفورم‬
‫ما تنسى ضيف تاريخ الوقلت اللي كل واحد قدم فيه‬

‫‪Very important how to create and handle with form.py‬‬

‫بدي اخد هلقيت الفورم واعمللها‬


‫‪Pass to view‬‬
‫‪ Details‬محتاج اعملها انا وين في‬

‫‪ POSt‬هلقيت سينايرو يا اما ضغطت‬


‫يا اما بعتتها فاضية‬
‫‪If press on apply button >> mean POST‬‬
‫وازا ما ضغطت نفذ حاجه تانية‬
Go to Template:

‫ حتالقي مفش فيها‬method


‫في نوعين عنا منالفورم فيه ممكن تبينه من ديجانقو‬
‫‪ template‬وممكن تبنيه من‬
‫هيو فاضي‬
‫عاوز ازبط شكلها كويس‬
‫‪Django Bootstrap 4‬‬
‫‪ setting‬بتروخ على‬
‫تبعت المشروع كلو وبضيفها‬
‫شوف هلقيت شكلها‬
‫‪ button‬وحط زر‬
‫تحت الفورم‬
‫‪ POST‬هلقيت بدي اتعامل مع داتا اللي جاي من‬
‫‪ form.py‬تذكر الملف اللي انشأته‬
‫اللي فيه االتي‬

‫‪ pass‬بدك تعملي هلقيت‬


‫للحاجات‪ l‬اللي عبيتها في الفورم‬
‫‪ request.POST‬عن طريق‬

‫فيه مشكلة انو لسا موصلش‬


‫‪Pass >> request.FILES‬‬

‫سبب المشكلة انو الفورم‬


‫‪ not valid‬وكمان انت ناسي تحط الوظيفة كا هو موضح‬
‫تذكر انك محتاج لمن ترفع ملفات انك‬
‫‪Pass >> FILES‬‬

‫وايضا في الفورم نفسها كمان انت محتاج‬


‫‪Pass enctype‬‬
‫بتروح على لوحة تحكم بتالقي البيانات‪ l‬انضافت‬
‫‪ POST‬اي انعمللها‬
‫هيني بدي اعدل واشيل الوظيفة علشان بدون يقدم على الوظيفة مباشرة من‬
‫اللي جنب الوظيفة ‪Apply‬‬
‫‪ - ١٥‬اضافه وظيفه علي الموقع | دجانجو ‪٣‬‬
‫‪ Fronted‬بدي اروح الى مجلد‬
‫واجيب منه صفحة اللي بضيف منها وظيفة‬
‫بتحضر دالة تبعتها في الفيو‬
‫‪ url‬بدي بغعدين اروح على‬
‫اعطيه المسار تبعها‬
‫‪/add‬‬
‫واربطها بدالة الخاصة بها من الفيو تبعها‬
‫مالحظة مهمة جدا جدا‬
‫‪Very very important‬‬
‫كانها اسم وظيفة من ‪ add‬النو حيشوف‬
‫‪Slug‬‬
‫قبلها ‪ add‬فبتحط‬

‫‪ job add‬مكانش فيها صفحة‬


‫من صفحة ونسخها عليها ‪ html‬اخد‬
‫وما تنسى المسار اللي بدك اتحطها فيه الخاص بالتميبلت تبعت الوظايف‬
‫‪Templates/job >> ad_job.html‬‬

‫وهلقيت بتعطي الفيو صفحة مسار االت تي ام ال‬

‫اعمل على لينك في المتصفح حيجبلك مشكلة‬


‫‪ HTML‬هي شويت تعدالت داخل صفحة‬

‫بدي اعمل فورم للوظيفة‬


‫هلقيت بدي اعطيه الفيلدز اللي بدي اتعامل معاها‬
‫__‪__all‬‬
‫هيك حيوخد كل الفيلدز اللي موجودة في المودل‬

‫بدك تعملها امبورت في الفيوز من الفورم‬

‫هلقيت لمن تضغط على زر الها حالتين يا حيبعت بوست يا بضل فورم عادي‬
‫‪ form not >> form1 as write‬انتبه االسم اللي بترجع فيه‬
‫‪ Slug‬بديش اياه يرجعلي ل‬
‫شوف هلقيت مش حتالقي موجود‬

‫انسينا بدنا انضيف الشخص اللي بضيف اليوزر‬


‫‪ quick‬اضغط على يوزر اللي تحتها خط اصفر بعدين على‬

‫بس االونر هادا شخص بنفعش يظهرويبين مين اللي ضاف الوظيفة‬
‫بدي اعملو من الفورم اكسكلود‬
‫‪ save >> pass user‬بصير لمن اعمل‬
‫مش محتاج انك تحفظها على داتا بيز >> ‪Commit=False‬‬
‫‪ pass OWNER‬الني محتاج اعمل‬
‫اللي ناشر الوظيفة‬
‫فيه مشكلة‬

‫شوف هليقت لمن انت ضفت الوظيفة‬


‫حيبين اللي ضاف الوظفية اللي هو االدمن علشان انت شغال فيه‬

‫فيه حاجات فنيتا بتنحل عن طريق انك تعمل امبورت عن طريق‬


‫‪Quick Fix‬‬
‫االساسي ‪ url‬اوال بتعطيه هادي اللي هي من‬
‫‪ project‬اللي جوا مجلد‬
‫الفرعي هادا ‪ url‬وبعدين بتروح‬

‫وهلقيت صار معي المسار كامل وبقلو لمن تعمل‬


‫‪Save >> redirect reverse‬‬

‫‪ - ١٦ login , logout , password‬اضافه ال‬


‫الجزء االول | دجانجو ‪change ٣‬‬
‫‪Google >> Django user authentication‬‬
Best explain :
url >> ‫االساسي‬
Built in Djnago
127.0.0.1/8000‫افتح في المتصفح‬/accounts

‫كل هدول موجودين بس لمن ضفت لينك واحد بس‬

Create folder inside Account Folder


Folder Templates/ inside it >> new Folder registration
Page >. Login.html
Logout.html
Password_reset .html

Password reset done


Password_change_form.html
‫هادي صفحة انت بتعملها‬
‫هلقيت مشكلة بسبب‬
‫‪ >> account‬تبع ‪App‬‬
‫‪ settings‬مش محطوط هنا في‬
‫بتعدلها من‬
Base generic >> Base.html
‫هيها ظهرت‬

‫‪ APP‬مشكلة بسبب انو بعرض براعي الترتيب وهو بعرض من‬


‫‪ account‬تنقل‬
‫فوق قبل كل شي‬
‫‪ url‬وكمان تحصل هادي المشكلة في‬
‫‪ account‬تنقل المسار تبع‬
‫‪ admin‬فوق‬
‫‪Base generic >> Base.html‬‬

‫ولكن صفحة شكلها مش مزبوط‬


‫ بنعمل صفحة‬base_generic.html

Revision video 11:45 min:14:00


‫ عمل تعديالت في صفحات بخصوص‬html
‫بدي اقعد ازبط دنيا كلها بنفس لستايل‬
‫‪ - ١٧ login , logout ,‬اضافه ال‬
‫الجزء الثاني | دجانجو ‪passwordchange ٣‬‬
‫عاوز اضيف باقي صفحات‪ l‬على نفس شكل‬
‫تعديالت علشان شكل يزبط‬
‫‪Base generic‬‬
‫‪Content‬‬
‫‪Bootstrap‬‬
‫وشكل زر االخضر‬
Sign up
‫‪ app‬تذكر كل‬
‫‪ url‬الو‬
‫الخاص فيه‬
‫اعطيه المسار واربطو بالدالة تبع الفيو‬
‫‪ model‬بدنا نروح نصمم في‬
‫الزم يكون بين وبين اليوزر ريالشن >> ‪Profile‬‬

‫بدنا نقسم شغل اليوزر لنصين‬


‫نص حينعملو حفظ في اليوزر والنص االخر في البروفايل تبعي‬
‫فالزم يكون فيه ريالشن بينهم‬
‫شو نوع العالقة حتكون‬
One to one >>> ‫النو اليوزر الواحد‬
‫له بروفايل واحد‬

Django phone filed


Django City Field >> Countries

‫ ما يعمل‬sign up >> Create user >> empty >>when complete


profile >> User Done Created.
‫فمحتاج انا اول ما ينشأ يوزر ينشأ ايضا بروفايل له‬
Django Signals
‫‪Pre_save and post_save‬‬
‫معناتها قبل ما تعمل حاجه وبعد ما تعمل حاجه‬
‫معناتو انو دالة هادي حتكون ريسيفر يعني هي اللي حتستلم‬
‫بعمل ما تنشا يوزر حينشالك بروفايل‬
Refresh admin
‫حتالقيهم ظهرو‬
‫معانتو اول ما تنشا يوزر حتبعت سيجنال لدالة دي حتروح توخد اسم اليوز تنشال‬
‫له بورفايل‬

‫فيه مشكلة ظهرت بقولك‬


‫‪City‬‬
‫الزم توخد قيمة‬

‫عاوز ارجع اسم اليوزر‬

‫كانت هيك قبل‬


‫__‪ __str‬ولمن ضفت‬
‫اخد االسم‬

‫في دجانجو | دجانجو ‪ - ١٨ signup ٣‬اضافه ال‬


‫بدك تعدل في المسار االساسي‬
‫االتنين بنفس االسم النو اتنين بلبو نفس الغرض‬
‫‪ built in Django‬واحد بجيب الحاجات‪ l‬اللي‬
‫واحد بجيب الحاجات‪ l‬اللي انا بدي اياها‬
‫‪Refersh‬‬
‫‪ signup‬حتالقي‬
‫انضافت‬
‫‪ forms.py‬انشالي ملف‬
‫‪ App accounts‬داخل‬
‫ بتعمللها‬import >> View

‫ وبنسخ كود‬html ‫ تبع‬login


‫ لملف‬signup.html
‫وعندي حالتين يا اما تعمل خفظ او اتسيبها فاضية‬
‫عاوز شو علشان احدث سيشن واعمل لوقن‬
‫‪ username and password‬محتاج‬
‫‪ >> Login‬وكمان ازا االنثونتكاشن صح اعمل‬
‫‪ import > authentication and login‬ما تنساش تعمل‬
‫وديني على البروفايل تبعي >> ‪ >> redirect‬اعملي‬
‫‪Very important ::‬‬
‫حتالقي اليوزر اللي انشاتو‬
‫الخاص بالمستخدم في دجانجو | ‪ - ١٩ profile‬اضافه ال‬
‫دجانجو ‪٣‬‬
‫‪View >> Sign up‬‬

‫‪Url >> Sign up‬‬


‫انشوف فيه صفحات‪ l‬لليوزر >> ‪ templates‬بدنا نروح على‬
‫مفش بدنا ننشأاي صفحات‬

‫بدنا نعمل امبورت للفروفايل‬


‫عاوز اجيب برفوايل اليوزر الحالي‪ l‬اللي عامل لوقن‬
‫وبدعين بتحطيه الباث اللي بدها ترجع في داتا جوا تمبلت تبع االتش تي ام ال‬
‫مع الكونتست تبعو‬
Create new folder accounts >> inside templates
‫ وبنتعملك فيه صفحتين‬html
‫ بدك تنشأ صفحات‬HTML >> profiles

Very important note:


‫ >> انا مرجع من الفيو‬Context ‫تبعي اللي هو‬
‫ وبترجع كمان‬attribute based on your Class (inside Model)
‫للتذكير فقط‬
‫‪ context‬اللي في االسفل االي لزمني علشان اعمل هيك اسحب من‬
Refresh
‫وهادي مالحظة مهمة‬
‫‪Very important note:‬‬
‫‪Profile.user.email‬‬

‫انت رحت للمودل تبع اليوزر اللي هو جوااه االيميل‬


‫وتذكر كمان انو معلومات اليوزر عندي معملوهم حفظ في اتنين مودلز‬
‫اليوزر والبروفايل‬

‫علشان اكسيس اي حاجه جوا اليوزر‬


‫اسم االوبجكيت تبع البروفايل وبعدين يوزر‬
‫بعدين اي فيلد من اللي هنا‬
‫هلقيت بدنا نضيف زر لتعديل البروفايل‬
‫حاجه مهمة انك بدك تتعامل مع اتنين فورم في نفس البيج‬
‫الخاص بالمستخدم في ‪ - ٢٠ profile‬اضافه التعديل علي ال‬
‫دجانجو | دجانجو ‪٣‬‬
‫تذكر معلومات اليوزر مقسومة في دولين جزء في يوزر وجزء في البروفايل‬
‫الزم تنعمل عن طريق اتنين فورم‬
‫طيب هان في مالحظة مهمة جدا‬
‫‪ forms.modelform‬لماذا هادي وراثة من‬
‫‪ UserCreationForm‬معنو اللي فوق وارثه من‬
‫بتورثه منو علشان ليوزر الو باسورد محتاج ينعملو‬
‫‪Encryption and hashing‬‬
‫وبس الزم ديجانقو هو اللي ينشأ اليوزر‬

‫بينما اللي تحت مجرد فورم عادية‬


‫‪ Edit‬وهلقيت بدك تعطيه الفيلد اللي محتاج تعمللها‬
‫بدك تعمل كالس خاص ب البروفايل فورم‬
‫وبتورث من الفورم العادي‬

‫بدك تعمل امبروت للفروم داخل الفيو‬


‫وبدل ما اكتب الفروم سطر واحد حتكب اتنين فورم‬
‫عاوز اول شي اجيب اليوزر اللي عمل لوقن اجيب البروفايل تبعه‬
‫‪Context:‬‬

‫وبضيف كمان فورم‬

‫اعمل ريفرش حتالقي لتنين فورم‬


‫اليوزر اللي عامل لقون حاليا >> ‪Instacen=request.user‬‬
‫البروفايل اللي نت جايبو من فوق لسا >> ‪Instance=profile‬‬
‫‪ pass‬حتالقي المعلومات ظاهر هنا كانك عامل >> ‪Refresh‬‬
‫لمعلموات المستخدم الشغال حاليا مع معلومات البروفايل‬

‫صحيح ‪ city‬بدنا نرجع اسم‬


‫‪ city object 1 >> solution __str__ for your model‬مش‬
‫‪Check two form are valid >> Save‬‬
‫>> بدك تروح توخد داتا اللي راجعه من الفورم لمن اعملت حفظ للفورم‬
‫‪request.POST‬‬
‫‪ Valid‬بعدين بتعمل عليهم تشيك انهم‬
‫‪ user‬اعمتلها علشان امررلها >> ‪Commit=Fasle‬‬
‫شخض اللي عامل لوقن حاليا‪Request.user >> l‬‬

‫بدك بعد هيك يعمل رايدايركت للبروافيل تبعك‬


‫‪ import >> reverse‬وما تسنى تعمل‬

‫فيه حاجه لسا ناقصه عندي وهي صورة‬


‫علشان لمن تيجي تعدل صورة تعدل معاك‬
‫‪ HTML‬بدك اضيف لينك في صفحة‬
‫االساسي ‪ url‬بتجيب‬
‫وننجيب اليو ار ال الفرعي‬

‫‪ parameters‬بتتاكد هلقيت هل اليو ار ال بيوخد منك‬


Refresh click on edit profile
‫| ‪ - ٢١ Login_required‬اضافه اللينكات في الموقع وال‬
‫دجانجو ‪٣‬‬
‫‪ base >> inside template‬افتح ملف‬

‫‪ Browse Job‬اعملت صفحة‬


‫يعرضلك الوظايف‬
‫ تنساش ملف‬url
‫ >> الخاص ب‬Contact APP

‫ وبروح على الفيو تبع‬View of Contact


Create function >> send message
‫>> ‪ HTML‬وبتعطي صفحة‬
‫تبع ديجانقو ‪url‬‬
‫اتذكر اول شي االساسي بعدين الفرعي‬

‫ةاعطي كمان لوقن صفحة تبعت او الماسر تعب اليو ار ال الخاص به‬
‫من االساسي ثم الفرعي‬
‫هو شخص لو مش عامل لوقن بقدر يضيف وظيفة‬
‫الزم شرط يكون عامل لوقن‬
‫وبتعطي المسار البثا تبع اليو ار اس للبوست جوب‬

‫والن مفروض تكون عامل لوقن علشان الوظيففة ينعمللها حفظ‬


‫‪Go to App(job) >> View‬‬
‫‪ decorator built in Django‬بعمل فنشكن تاني بس ك‬
‫بطبق عليها شويت حاجات‪ l‬علشان تتنفذ‬
‫‪ decorator‬بتعمل فنكشن تاين بيها شروط ك‬
Refersh without login >> will be go to Login Page
‫بدي كلمة لوقن تشنال وينضاف بدالها كلمة بورفايل‬

‫‪Very important note:‬‬


‫بودي اعطي كلمة البروفايل الباث‪ l‬يعني مسار اليو ار ال تبع البروفايل‬
‫يعني لو ضغطت عليها حيودينا لصفحة البروفايل‬
‫للوظائف في المشروع | دجانجو ‪ - ٢٢ filter ٣‬اضافه‬
‫‪Django filter >> Github library‬‬
‫بتساعدك تعمل فلتر من خالل اكتر من شي‬
‫علشان نسهل الشغل‬

Install >> then (app of Setting)


Create file >> filter.py
‫وين بدي احط الفلتر في البيج اللي بتنعرض فيها الوظايف‬
‫وين الفيو اللي بتعرض كل الوظايف‬

‫‪ run server >> Log‬اعمل‬


‫‪ error >> solve it before proceed.‬ازا فيه ازا فيه‬
‫‪ exclude‬اعمل‬
‫‪ job_list‬كل الوظايف وين بترجعلي في‬
‫حيوخد مني ريقوست ‪jobFilter‬‬
‫‪ paginator‬هة صح انو يطبق قبل‬
‫‪ html‬علشان بدي اتعامل معاه في صفحة >> ‪ context‬وعاوز ارجعو في‬

‫عاوز اروح للمكان اللي فيه فلتر‬


‫ بتعطيه‬context and change action for method=GET
‫علشان انسينا انقلو‬
‫‪Myfilter.Form‬‬
‫يظهر ‪ slug‬بديش‬
‫‪ exclude‬بروح على‬

‫‪ owner‬كمان‬
‫ رجع على‬documentation
‫ بسبب قصة لمن بحث داخل‬dscription >> search Django word
‫كمان يحتوي على ‪ title‬و‬

‫‪ Django Bootstrap‬بدنا نطبق معاها‬


‫صار شكلها حلو‬

‫وارسال رساله جي ميل ‪ - ٢٣ Contact Form‬اضافه ال‬


‫في دجانجو | دجانجو ‪٣‬‬

‫‪ HTML‬زبط هلقيت صفحة‬


‫)‪ APP ( Contact‬سبب في كل مشكلة انو مش محطوط في‬

‫هيها اشتغلت صفحة تمام‬


‫‪ model‬معلومات دي ممكن اعمللها مودل‬
‫‪ contact‬تنعرض من‬
‫‪ migrate‬ما زال عدلت على مودلز ما تسنى تعمل‬

‫معلمومات هادي عاوز اضفيها في االدمن تبع ديجانقو‬


‫عاوز هلقيت اعرض المعلومات هنا‬
‫بتروح على الفيو‬

‫‪ Context‬وبتستدعي ملعومات من صفحة االتش تي ام ال ب‬


‫تنساش تغير كمان االيميل‬
‫عاوز اتعامل مع ايميل سيرفس >> ‪Send message‬‬
‫بدك تزبط الكونفقراشن لكل ميل سيرفس في االول في االعدادات الرئيسية‬
‫‪Project >> settings.py‬‬
‫‪Google >> Django sending email‬‬
‫‪ key‬ناقصني‬
‫‪ key‬كيف بدي اجيب‬
Generate password >> take it for Key
‫ بمهمني‬method
‫ تكون‬POST
‫محتاج تحطلي هلقيت رسالة واالميمل‬

‫ما تنسى االسماء علشان بدك تتعامل معهم في الفيو‬


‫وانا في الفيو عاوز اجيب المعلومات دي‬

‫‪Very important note:‬‬


‫علشان تتاكد وشتوف دنيا شغاله‬
‫‪ print‬اعمل‬

‫‪ CSRF‬ما تنسى حل مشكلة‬


‫بدنا نبعت رسالة على جي ميل‬
Contact form send to Gmail
‫ مقدمه عن ال‬- ٢٤ Django Rest Framework |
٣ ‫دجانجو‬
‫ بعد ما نزلها بنضيفها في‬installed APP ( project >> Settings)

‫ بدنا نضيف‬url authentication >> urls.py


/login
Google image >> REST Famework works
‫متاج ارجع داتا دي على شكل جيسون‬
‫‪ JSON‬هي شكل‬

‫‪ API‬ليش بستخدم‬
‫‪ react VUE‬علشان لو دبي اتعامل مع الفيرمورك تبعت الجافا‪ l‬سكربت زي‬
‫‪angular‬‬
‫واالهم في استخدام اني اربطها في الموبايل‬
‫تطبيق موبايل اب اني اتعامل معاه‬
‫‪ api‬يعني الجسون اللي بطلعه من‬
‫بتقدر بعد هيك تستخدمو لربط في الموبايل او مع الجافاسكربت فيرمورك‬

‫‪ API‬يعني انا محتاج‬


‫‪ JSON‬فقط علشان محتاج اطلع داتا‬
‫‪AJAX‬طيب ما في عنا مكاتب جاهز بطلع جاسون ل‬
‫‪ REST Freamwork‬وطيب ما زال هيك ليش انا محتاج‬
‫‪ authentication and security‬بسهل علي حاجات كتير في‬
‫وايضا سهولة شغل‬

‫‪ APP‬بروح لكل‬
‫وبنضيف ملفين جداد‬
‫وهادا عبارة عن الفيوز ‪Api.py‬‬
‫بوخد داتا من المودل وبحولها لجيسون ‪Serializers.py‬‬
‫‪ API‬وبدي اعمل فيوز خاص ب‬
‫بصير ارجع حتى لو بدك ترجع وظيفة واحدا على شكل جيسون‬
‫‪ API‬بعمللها فنشكن في‬
‫‪ Django Rest‬في ‪ - ٢٥ Serializer‬انشاء‬
‫دجانجو ‪Framework | ٣‬‬
‫بدنا نعمل امبورت للسترايليز‬
‫‪ api.py‬بدي اروح على‬
‫اللي عندي ‪ sterazliaer‬هلقيت استخدم‬
‫عن طريق قنكشن‬
‫‪ API‬اعطيه المسار اليو ار ال لل‬
‫تنساش تصيحيح المسار‬
‫‪Api.joblistapi‬‬

‫‪Function based view‬‬


‫عاوز ارجع كل الواظيف‬
‫‪ /job/api/list‬بتروح على متصفح‬
‫ بدك لفيو نتيجة تبعتو ترجع ب‬GET or POST
Very important note:
‫مراجعة في االول بدي اعمل ملفين‬
Serilaizer >> model >> Fields
Api >> as the same View >> Function return all jobs >> pass
for serialzier >> to return it (JSON)
‫ وعلشان داتا كتير‬many=True
‫ وبعدين بضيف‬URL

‫ استخدام ال‬- ٢٦ function ‫ وال‬Generic Views ‫في‬


Django Restframework | ٣١ ‫دجانجو‬
HTTP Methods
‫علشان اعدل ‪Put‬‬
‫كيف بدي ارجع وظيفة واحدة‬
‫‪ rst api‬علشان اتعامل مع‬
‫‪ api.py‬اللي هو ‪ api‬هنالك ‪ 3‬طرق مش شرط الفنكشن في الفيو تبع‬
‫‪Function based views‬‬
‫اسهلهم‬
‫تعديل اسهل واسلس‬
‫لو معقد كمان افضل‬
‫‪Class based view‬‬
‫تستسخدم في تطوير‬
‫‪Viewsets‬‬
‫بيعملك كل حاجه ‪ api‬يعني‬
‫وهي اسلهم ولكن لماذا ال تستخدم‬
‫‪ customize it‬صعب النك‬
‫‪ ID then Slug‬اول شي بدنا نشتغل ب‬

‫بتحط في المتصفح علشان ترجع لوظيفة‬


‫‪127.0.0.1:8000/jobs/api/jobs/1‬‬

‫‪ Generic views‬هات انجيب‬

‫اعمل امبروت لللجينيرك واعمل اتنين فيو‬


‫وخلينا هلقيت نعرض كل الوظايف على شكل جينيرك فيووز‬

‫سوف تستسخدم لعرض كل الوظايف اللي عندي وحتورث من جينريك‬


‫بنزبطلها المسار تبع اليو ار ال‬
‫تستخدم لتعبر عن دالة من لكالس تبع الفيو >> )(‪ as_view‬مالحظة‬
‫‪ /jobs/api/v2/jobs‬لمن شغل في المتصفح جابلو مشكلة‬

‫وهي كمان مشكلة‬


‫‪ seritalizer class‬هادا بقولك انو الزم اتمررلها‬

‫مالحظة هنا انو احنا مكتبناش كود كتير زي قبل‪L‬‬


‫‪ documentation‬وكل الكالم اللي فوق من‬
‫بدنا انجرب نستخدم واحد منهم‬
‫اللي هي‬
‫‪Retrieve update Destroy APIView‬‬
‫بعدين بتعطيها المسار الخاص بها‬
‫‪ url >> ID‬علشان خاطر اقولو اللي برجعلك من‬
‫‪ url >> pass id‬تذكر النو‬

‫ولكن الحظ هنا‬


‫وكمنا الحظ تحت في فورم منه تعدل‬

‫النو هادا جينيريك‬


‫رجع >> ‪Retrieve‬‬
‫عدل >> ‪Update‬‬
‫امسح >> ‪Destroy‬‬
‫في الطريقة عادية مكانش فيه كدا‬
‫‪ url‬شوف هلقيت هادا‬

‫برجعلي وظيفة واحدة وبدقر اعمل تغير وبقدر امحيها‬


‫‪ class based view‬شفت ميزة‬
‫‪ very important note:‬مالحظة مهمة جدا جدا‬
‫اقدرت عن طريقو فتكشن واحدة‬
‫تعمل تالت حاجات‬
‫شوف صو بدي يصير لمن اضيف‬
‫‪ListCreateAPI‬‬
‫شوف شو اظهرلك‬
‫فورم تقدر منو اضيف وظيفة‬

‫علشان تنجز شغلك تبع بثواني >> ‪Class based view‬‬


‫افضل واسرع وكل شي جاهز‬
‫‪Very important note‬‬
‫وهي من اوقى االحاجات‪ l‬اللي ممكن تشتغل بيها‬
‫ كيفيه استخدام ال‬- ٢٧ postman | ٣ ‫دجانجو‬
‫ افضل تول التي تستخدم علشان تست‬API
POSTMAN

After installed
Right >> Create new Collection
Inside it > Create Folder ( job)

‫ حتالقي فيه كل‬API


‫الخاصة بالجوب‬
‫‪ url‬انسخ‬
‫اللي انت شغال فيه‬
‫تبعته ‪ method‬حدد نوع‬

‫‪send‬اعمل‬
‫حتالقيه رجعلك كل المعلومات‬
‫خد نفس لينك وافتحو وفنيو تاب‬
‫‪ POST‬وغيرلو الميثود وخليها‬
‫وبتقدر عن طريق تبعت داتا‬

‫‪ method support through API‬كيف دبك تعرف شو نوع‬


‫ومن هنا بضيف المعلومات‬

‫وبعدين بتروح تعمل حفظ للجوب‬


‫فحتالقيه ظهلك على جنب‬

‫بدك تغير اسم العنوان‬


‫‪ post‬وبدنا نعمل حفظ لتاب تبعت‬

‫حتالقيه ظهرلك مشكلة‬


‫وهيك اشتغلت تمام‬
31/Aug

Вам также может понравиться