كيف قمت بإنشاء تطبيق الآلة الحاسبة باستخدام Django ج3

لقد انتهينا من تصميم تطبيق الآلة الحاسبة. باستخدام HTML، كما قمنا بتعيين هيكل الآلة الحاسبة. و استخدامنا أيضا CSS لتجميل الآلة الحاسبة وتصميم التخطيط. وأخيرًا، استخدمنا JavaScript لجعل التطبيق يتفاعل مع الأزرار الأخرى وإجراء العمليات الحسابية الأساسية.

إلى هنا انتهت مهمتنا ولكن هناك مشكلة. طوال مرحلة التطوير، استخدمنا محرر نصوص لكتابة الكود ولملاحظة ما كنا نفعله على المتصفح، وقمنا بنسخ المسار إلى الملف ولصقه في شريط العناوين. وبدون القيام بذلك، لا يمكننا رؤية تطبيق الآلة الحاسبة.

علاوة على ذلك، و حرصنا على إدراج لغة بايثون في بناء المشاريع، تمامًا كما ذكرنا في الجزء الأول من هذا البرنامج التعليمي للمشروع، سنستخدم Django، وهو إطار عمل Python، لاستضافة هذا التطبيق.

إعداد جانغو

لدينا الكثير لنفعله على الطرفية لإعداد Django. سنبدأ بإنشاء مجلد منفصل لهذا المشروع، وتفعيل بيئة افتراضية وتثبيت Django.

mkdir project && cd project
python3 -m venv .venv
source .venv/bin/activate
pip install django tzdata

بعد ذلك، سنقوم بإنشاء كل من مشروع و تطبيق Django.

django-admin startproject operation .
python3 manage.py startapp calculator

في هذه المرحلة، من المتوقع أن يكون لديك هذه الملفات في المجلد الخاص بك:

README.md  calculator  index.html  manage.py  operation  script.js  styles.css

بعد ذلك، سنقوم بإنشاء القوالب والمجلدات الثابتة. داخل المجلد الثابت، نقوم بإنشاء مجلدين إضافيين لـ JavaScript وCSS.

mkdir -p templates static/js static/css

إجراء تغييرات في ملف الإعدادات

ننتقل الآن إلى ملف settings.py لإبلاغ Django بما قمنا به. داخل الملف، ابدأ بإضافة التطبيق الذي تم إنشاؤه حديثًا في قسم INSTALLED_APPS.

INSTALLED_APPS = [
    …
    # custom app
    'calculator',
]

بعد ذلك، قم باستيراد وحدة نظام التشغيل os وانتقل إلى قسم “TEMPLATES” لإجراء التغيير التالي:

TEMPLATES = [
…
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
…
]

و لإخبار Django بمكان البحث عن الملفات الثابتة، انتقل إلى أسفل الملف و بالضبط تحت STATIC_URL مباشرةً، وقم أيضًا بإجراء هذا التغيير:

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

بعد ذلك، في ملف URL على مستوى المشروع، قم بإجراء هذا التغيير:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('calculator.urls')),
]

أعد تسمية ملف CSS وانقل القالب والملفات الثابتة إلى مكانها الصحيح بإستخدام الطرفية.

mv styles.css base.css
mv index.html templates

mv base.css static/css/

mv script.js static/js/

و هذا هو الناتج المتوقع لمجلد المشروع الخاص بك:

README.md  calculator  manage.py  operation  static  templates

إجراء تغييرات على ملف العلامات

افتح ملف Index.html و قم بتحميل الملفات الثابتة في الأعلى:

{% load static %}

اضبط الرابط الذي يشير إلى ملف CSS ليكون هكذا:

    <link rel="stylesheet" href="{% static 'css/base.css' %}">

و سيكون وسم script لجافا سكريبت أيضًا على النحو التالي:

<script src="{% static 'js/script.js' %}”></script>

دالة العرض وعنوان URL على مستوى التطبيق

لعرض تطبيق الآلة الحاسبة على الخادم المحلي، يتعين علينا إنشاء دالة عرض وعرضها.

دالة العرض بسيطة للغاية:

from django.shortcuts import render

def index(request):
    return render(request, 'index.html')

بالنسبة إلى عنوان URL على مستوى التطبيق، أنشئ ملف urls.py داخل مجلد التطبيق.

from django.urls import path
from .views import index


urlpatterns = [
    path('', index, name='home'),
]

هذا كل شئ. يمكننا الآن تشغيل الخادم المحلي.

python3 manage.py migrate
python3 manage.py runserver

إضافة صغيرة

دعونا نوسع تطبيق الآلة الحاسبة ليشمل ساعة رقمية حتى نتمكن أثناء قيامنا بإجراء العمليات الحسابية من مراقبة الوقت أيضًا. أضف هذا إلى ملف Index.html مباشرة بعد وسم <body> :

{% block top %} {% include 'clock.html' %} {% endblock top %}

أريد الالتزام بمبدأ فصل الاهتمام. ومن ثم سنقوم بإنشاء ملف منفصل للساعة وإدراجه في ملف Index.html. لاحظ الكلمة الأساسية للكتلة: top. يمكن أن تكون أي كلمة من اختيارك. أستخدمه للإشارة إلى أنني أريد أن تظهر الساعة أعلى الآلة الحاسبة.

كل شيء سيكون في ملف منفصل. لذا، بما أننا لا نزال في ملف Index.html، قم بتضمين الرابط إلى ملفات CSS وJavaScript.

<link rel="stylesheet" href="{% static 'css/clock.css' %}">
<script src="{% static 'js/clock.js' %}"></script>

الآن، قم بإنشاء ملف Clock.html داخل مجلد القوالب.

{% block top %}

<div id="MyClockDisplay" class="clock"></div>

{% endblock top %}

هذا هو كل ما نحتاجه. سيتم تنفيذ الباقي باستخدام JavaScript. لاحظ كيف نتأكد من ظهور هذا العلامات في ملف Index.html عن طريق تغليف الكود داخل عبارات block.

الملف التالي هو ملف CSS. سيتم إدخاله داخل مجلد CSS.

.clock {
  position: absolute;
  top: 10%;
  left: 45%;
  transform: translateX(-50%) translateY(-50%);
  color: #17d4fe;
  font-size: 60px;
  font-family: Times New Roman;
  letter-spacing: 7px;
}

لقد شرحنا بعضًا من هذه الأمور في سلسلة الجزء الأول من مقالة المشروع هذه. نستخدم فئة clock  لتصميم عنصر HTML.

أستخدم الخصائص العلوية واليسرى (10% بعيدًا عن الحافة العلوية و45% بعيدًا عن الحافة اليسرى) للتأكد من وضع الساعة الرقمية أعلى الآلة الحاسبة. تتأكد خاصية التحويل أيضًا من توسيط العنصر أفقيًا وعموديًا.

التالي هو جافا سكريبت. سيؤدي هذا إلى عرض الساعة وجعلها علامة.

window.onload = function showTime(){
  let date = new Date(),
      h = date.getHours(),
      m = date.getMinutes(),
      s = date.getSeconds(),
      session = 'AM';

  if (h == 0){
    h = 12;
  }

  if (h > 12){
    h -=  12;
    session = 'PM';
  }

  h = (h < 10) ? '0' + h : h;
  m = (m < 10) ? '0' + m : m;
  s = (s < 10) ? '0' + s : s;

  let time = h + ':' + m + ':' + s + ' ' + session;

  document.getElementById('MyClockDisplay').innerHTML = time;

  setTimeout(showTime, 1000);
}

showTime();

يتأكد window.onload من تحميل الصفحة قبل تشغيل أي كود JavaScript. داخل دالة showTime()، نقوم بإنشاء كائن تاريخ واستخدام طرق الحصول عليه لتخصيص الثواني والدقائق والساعات بالتوقيت المحلي لمتغير.

إذا كانت الساعة تساوي 0 (أي منتصف الليل)، يتم ضبطها على 12 لتجنب استخدام نظام 24 ساعة. إذا كانت الساعة أكبر من 12 (أي في فترة ما بعد الظهر)، يتم طرح 12 منها ويتم ضبط قيمة الجلسة التي تم ضبطها في البداية على “AM” إلى “PM”.

تتحقق الدالة بعد ذلك مما إذا كانت الساعات والدقائق والثواني أقل من 10. وإذا كانت كذلك، تتم إضافة “0” قبلها للتأكد من أنها تحتوي دائمًا على رقمين. ثم يقوم بتنسيق الوقت وتخزينه في متغير الوقت.

باستخدام .innerHTML للعنصر، نعرض الوقت الحالي على الصفحة. وأخيرًا، تستدعي الدالة نفسها كل ثانية واحدة لتحديث الوقت.

إلى هنا نكون قد وصلنا إلى نهاية هذا الدرس حول إنشاء تطبيق آلة حاسبة. يركز المشروع على كيفية استخدام JavaScript للتفاعل مع DOM. وامتدادًا، أوضحنا كيفية إضافة ساعة رقمية ليتم عرضها على تطبيق الآلة الحاسبة.


اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading