# ويب-تو-باي
ويب-تو-باي (بالإنجليزية web2py ) هو إطار عمل ويب مفتوح المصدر مكتوب بلغة بايثون . يتيح ويب-تو-باي لمطوري الويب برمجة محتوى ويب ديناميكي باستخدام بايثون . تم تصميم ويب-تو-باي للمساعدة في تقليل مهام تطوير الويب المملة، مثل تطوير استمارات الويب من البداية، على الرغم من أن مطور الويب قد يقوم بإنشاء استمارة من البداية إذا لزم الأمر.
تم تصميم ويب-تو-باي في الأصل كأداة تعليمية مع التركيز على سهولة الاستخدام ونشر البرمجيات . لذلك، لا يحتوي على أي ملفات إعدادات على مستوى المشروع. استُوحى تصميم ويب-تو-باي من أطر عمل روبي أون ريلز وجانغو . و مثله مثل هذه الأُطُر، يركز ويب-تو-باي على التطوير السريع ، ويفضل طريقة التطوير بالإتفاق ويتبع تصميم نمط وعرض ومتحكم .

## نظرة عامة
ويب-تو-باي هو إطار عمل ويب متكامل حيث يحتوي على مكونات مضمنة لجميع الوظائف الرئيسية، بما في ذلك:
- طلبات إتش تي تي بي ، استجابات إتش تي تي بي، ملفات تعريف الارتباط ، الجلسات .
- بروتوكولات متعددة [4] إتش تي إم إل / أكس إم إل ورست وصيغة أتوم وآر أس أس وجسون وجسون- أر بي سي واكس إم إل - أر بي سي وسواب الخ .[5]
- عملية إدارة البيانات وواجهة برمجة التطبيقات (CRUD API)
- آليات المصادقة المتعددة والتحكم في الوصول القائم على الدور .
- طبقة تجريد قاعدة البيانات (DAL) التي تنشئ إس كيو إل ديناميكيًا وتعمل بشكل متوافق على عدة قواعد بيانات .
- دعم لغات مكتوبة عديدة .
- حي كويري لعمليات اجاكس وواجهة المستخدم .
- تسجيل التلقائي للأخطاء مع السياق.

يشجع ويب-تو-باي ممارسات هندسة البرمجيات الصوتية مثل
- نموذج التحكم في العرض (MVC) .
- التقديم الذاتي [6] لنماذج الويب .
- جلسات من طرف الخادم .
- التعامل الآمن مع الملفات التي تم تحميلها إلى الخادم.

يستخدم ويب-تو-باي بروتوكول واجهة بوابة خادم الويب (WSGI) ، وهو بروتوكول بايثون الموجه للاتصال بين خادم الويب وتطبيقات الويب. كما يقدم للتعامل مع بروتوكولات واجهة المعايير العامة وواجهة المعايير العامة السريعة (FastCGI) ، وأنه يدعم تعدد الخيوط الخ

## السمات المميزة

### بيئة التطوير المتكاملة المستندة إلى الويب
يمكن إجراء جميع عمليات التطوير والتقيح البرمجي والاختبار والصيانة وإدارة قاعدة البيانات (اختياريا )عن بُعد دون استخدام أدوات تابعة لجهات أخرى، عبر واجهة ويب، والتي هي بحد ذاتها تطبيق عبارة عن تطبيق ويب-تو-باي . ويمكن أيضًا دعم اللغات المكتوبة (إضافة اللغات وكتابة الترجمات) من نفس بيئة التطوير . يحتوي كل تطبيق على واجهة إدارية لقاعدة البيانات يتم إنشاؤها تلقائيًا، على غرار جانغو . تتضمن بيئة التطوير أيضًا اختبارًا يستند إلى واجهة الويب.
يمكن أيضًا إنشاء التطبيقات من سطر الأوامر أو تطويرها مع بيئات التطوير المتكاملة الأخرى. و خيارات أخرى للتنقيح البرمجي :


يبدو برنامج أهلا بالعالم في ويب-تو-باي بأبسط أشكاله (صفحة ويب بسيطة  بدون قالب) كما يلي: 
```
def
 
hello
():

    
return
 
'Hello World'


```

 ويب-تو-باي يشمل لغة القالب مستمدة من بايثون، مع عدم وجود متطلبات المسافة البادئة ونموذج كائن المستند من جانب الخادم . نظام القالب يعمل بدون ويب-تو-باي . جوملا في عائلة الإصدار 1x يمكن تحويلها لتصاميم ويب-تو-باي .
يشتمل ويب-تو-باي أيضًا على مكتبتي ترميز: مرشح ماركداون لتحويل النص إلى إتش تي إم إل ، والذي يحول ترميز ماركداون إلى إتش تي إم إل
و ماركمين المستوحى من ماركداون ولكنه يدعم الجداول ووسوم اتش تي إم إل 5 للفيديو / الصوت الخ


سستخدم المتحكم الذي لا يحتوي على طريقة عرض تلقائيًا طريقة عرض عامة، وتقدم المتغيرات التي يتم إرجاعها بواسطة المتحكم، مما يتيح تطوير منطق التطبيق قبل كتابة إتش تي إم إل . مثال "Hello World" باستخدام قالب افتراضي: 
```
def
 
hello
():

    
return
 
dict
(
greeting
=
'Hello World'
)


```



وفيما يلي مثال أكثر تعقيدا، حيث يقوم بتعريف جدول ويعرضها لمستخدم قام بتسجيل الدخول : 
```
db
.
define_table
(
'thing'
,
Field
(
'name'
,
notnull
=
True
))



@auth
.
requires_login
()


def
 
hello
():

    
return
 
dict
(
grid
 
=
 
SQLFORM
.
grid
(
db
.
thing
))


```


### نظام التذاكر
كل تطبيق ويب-تو-باي يأتي مع نظام التذاكر :
- في حالة حدوث خطأ، يتم تسجيله ويتم إصدار تذكرة للمستخدم. التي تسمح تتبع الخطأ.
- يمكن الوصول إلى الأخطاء والشيفرة المصدرية فقط للمسؤول الذي يمكنه البحث عن الأخطاء واستردادها حسب التاريخ أو الآيبي . لا يوجد خطأ يمكن أن يؤدي إلى عرض الشيفرة للمستخدمين.


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