النص الأصلي: http://www.devshed.com/c/a/Python/Karrigell-for-Python/
نظرًا لأن لغة python ليست مصممة خصيصًا لتطوير الويب، يقوم العديد من مستخدمي python الآن بتطوير برامج تسمح بتشغيل python على إطار العمل
يعد Karrigell واحدًا من العديد من أطر عملpython/
web الآن، وستقدم هذه المقالة مقدمة مختصرة عن
Karrigell
والأهم من ذلك، أن تثبيته واستخدامه بسيطان للغاية. حتى المبتدئين في لغة بايثون لن يرتبكوا عند استخدام Karrigell، ولا يحد Karrigell من بعض ميزات بايثون بسبب بنيته البسيطة، فهو يوفر لك إمكانية استخدام خادم الويب الخاص بك لإكمال العمل ، ولكن من السهل أيضًا العمل مع خوادم الويب الأخرى (مثل Apache)، لذا إذا اخترت Karrigell، فلا يزال بإمكانك استخدام خادم الويب الذي كنت تستخدمه من قبل.
ستبدأ هذه المقالة من Karrigell فلنبدأ بالتثبيت و تقديم العديد من الميزات المهمة لـ Karrigell.
تثبيت Karrigell
كما ذكرنا أعلاه، فإن تثبيت Karrigell ليس أمرًا مزعجًا على الإطلاق، الخطوة الأولى التي يتعين عليك القيام بها هي تنزيل أحدث إصدار من Karrigell من SourceForge، بعد تنزيل الحزمة المضغوطة، قم باستخراجها إلى ملف دليل سهل العثور عليه، ثم انقر نقرًا مزدوجًا فوق Karrigell.py لبدء تشغيل خادم الويب المدمج في Karrigell. إذا كنت لا تريد استخدام Karrigell مع خوادم الويب الأخرى الآن، فسينتهي تثبيت Karrigell
هنا قم بإعداد خادم الويب الخاص بك للتكامل مع Karrigell، فلنأخذ Apache كمثال، نحتاج الآن إلى تشغيل Karrigell في خلفية Apache، بحيث يرسل Apache الطلبات ذات الصلة إلى Karrigell.
نظرًا لأن Apache يعمل عادةً على المنفذ 80، فأنت بحاجة إلى تعيين منفذ تشغيل آخر لـ Karrigell. هناك طريقتان لتحقيق هذا الغرض. إحداهما هي استخدام سطر الأوامر لإكماله، أو يمكنك تغيير ملف تكوين Karrigell أولاً انظر كيف سنقوم بتشغيل Karrigell على المنفذ 8080 باستخدام سطر الأوامر.
C:Karrigell>Karrigell.py -P 8080
ثانيًا، تحتاج إلى العثور على Karrigell.ini، ثم إضافة
منفذ الجملة = 8080
الآن تحتاج إلى تكوين Apache لنقل الطلب ذي الصلة، يتم إعادة توجيهه إلى Karrigell، بشكل عام، تريد أن يتعامل Apache مع أي طلب ملف ثابت، مثل php تتطلب من apache تمرير الطلب إلى Karrigell، فأنت بحاجة إلى إضافة ما يلي إلى ملف httpd.conf الخاص بـ
Apache
قاعدة إعادة الكتابة ^/(.*).py(.*) http://localhost:8080/$1.py$2 [L,P]
إعادة كتابة القاعدة ^/(.*).ks(.*) http://localhost:8080/$1.ks$2 [L,P]
إعادة كتابة القاعدة ^/(.*).hip(.*) http://localhost:8080/$1.hip$2 [L,P]
RewriteRule ^/(.*).pih(.*) http://localhost:8080/$1.pih$2 [P]
إذا أردت، يمكنك تعيين كافة الطلبات الخاصة بملف معين لإعادة توجيهها إلى Karrigell في هذه المقالة ، سيتم استخدام مسار testarea، لذلك قمنا بتعيين httpd.conf مثل هذا:
RewriteEngine On
RewriteRule ^/testarea(.*) http://localhost:8080/testarea$1 [P]
بالطبع يمكنك القيام بذلك:
RewriteEngine On
قاعدة إعادة الكتابة ^/testarea/(.*).py(.*)
http://localhost:8080/testarea/$1.py$2 [L,P]
إعادة كتابة القاعدة ^/testarea/(.*).ks(.*)
http://localhost:8080/testarea/$1.ks$2 [L,P]
إعادة كتابة القاعدة ^/testarea/(.*).hip(.*)
http://localhost:8080/testarea/$1.hip$2 [L,P]
إعادة كتابة القاعدة ^/testarea/(.*).pih(.*)
http://localhost:8080/testarea/$1.pih$2 [P]
البرامج النصية والخدمات
ستكون نصوص Python وخدمات Karrigell هما المفهومان الأكثر سهولة في الوصول إلى مطوري python الذين يستخدمون Karrigell. نصوص Python هي نصوص python، ويستخدم المطورون بيان الطباعة يقوم بإخراج المحتوى إلى متصفح المستخدم، إذا لم تفهمه بعد، فقم بإنشاء دليل منطقة الاختبار، وبعد ذلك سنبدأ في إنشاء أول نصوص بايثون النصية الخاصة بنا. قم بإنشاء ملف جديد test.py:
اطبع "<center>"
طباعة "مرحبا!"
طباعة "<br /><br />"
طباعة "تم تكوين Karrigell ويعمل."
طباعة "</center>"
افتح هذا الملف في المتصفح إذا تم إعداد Karrigell بشكل صحيح من قبل، فسترى الإخراج.
يمكن لنصوص بايثون أيضًا استخدام النماذج بسهولة. فلنقم بإنشاء صفحة بسيطة حيث يمكن للمستخدمين إدخال أسمائهم. أنشئ ملفًا جديدًا Askname.py:
if QUERY.has_key ("name" ):
طباعة "اسمك"، _name + "."
آخر:
طباعة "ما اسمك؟<br />"
طباعة "<النموذج>"
طباعة "<نوع الإدخال = اسم 'نص' = 'اسم' /><br />"
طباعة "<نوع الإدخال='إرسال' القيمة='متابعة' />"
طباعة "</form>"
تتم كتابة خدمات Karrigell بشكل مشابه لبرامج Python النصية والغرض من ذلك هو تعيين الطلبات للطرق المحددة بواسطة المستخدم اختبار الاتصال هذه الطريقة
http://localhost/testarea/test.ks/test
تتيح لنا كتابة هذا المثال
def Index():
طباعة "وظيفة الفهرس".
اختبار الدفاع ():
طباعة "وظيفة الاختبار."
إذا كنت تستخدم نصوص Python هذه دون تمرير اسم الطريقة، فسيقوم برنامجك بتنفيذ طريقة الفهرس بشكل افتراضي. إذا تم تمرير اختبار اسم الطريقة، فسيتم استدعاء طريقة الاختبار سوف رمي غير طبيعي.
من السهل أيضًا استخدام خدمات Karrigell للتعامل مع البيانات التي تم تمريرها في النماذج، فلنقم بإنشاء ascname.ks
def Index():
طباعة "ما اسمك؟<br />"
طباعة "<إجراء النموذج='nameSubmit'>"
طباعة "<نوع الإدخال = اسم 'نص' = 'اسم' /><br />"
طباعة "<نوع الإدخال='إرسال' القيمة='متابعة' />"
طباعة "</النموذج>"
تعريف الاسمإرسال (الاسم):
طباعة "اسمك هو"، name + "."
بالطبع، يعد السماح بالوصول العام الخارجي إلى أساليبك أمرًا خطيرًا للغاية لمنع المستخدمين غير المصرح لهم من الوصول إلى أساليبك، ضع بادئة لطرقك كما هو موضح أدناه:
def _private():
اجتياز
محاولات الوصول إلى الأسلوب _private إلى حدوث استثناء.
باستخدام HIP
في Askname.py، هناك شيء واحد جدير بالملاحظة. يحتوي هذا الرمز على عبارة طباعة إذا كان من الممكن إخراجها مباشرة دون استخدام الطباعة، فسيكون هذا أمرًا رائعًا ولحسن الحظ، يوفر Karrigell مثل هذه الوظيفة. وهذا ما يسمى HTML Inside Python وسيؤدي ذلك إلى تنظيف جميع عبارات الطباعة السيئة. كما أن التحويل من Askname.py إلى TML Inside Python سهل للغاية تمت إزالته. احذف النسخة المطبوعة في Askname.py وأعد تسمية الملف إلى Askname.hip
f QUERY.has_key ("name" ):
"اسمك"، _name + "."
آخر:
"ما اسمك؟<br />"
"<طريقة النموذج='POST'>"
"<نوع الإدخال='نص' اسم='اسم' /><br />"
"<نوع الإدخال='إرسال' القيمة='متابعة' />"
"</form>"
هذا هو HTML Inside Python، وسيقوم Karrigell بفحص ملفك وإضافة الطباعة تلقائيًا عند الحاجة. يعد HTML Inside Python بمثابة شهادة على مدى سهولة تعلم Karrigell
Python
Inside HTML
داخل Python، بطبيعة الحال، سيوفر Python Inside HTML، كالعادة، اكتب عبارات python في علامات خاصة، ثم أرسل النتائج النهائية إلى متصفح المستخدم، فلنقم بإنشاء مثال بسيط، Random.pih
<% import Random %>
رقم عشوائي: <b><% print Random.random() %></b>
كما ترون، فإن مفهوم Python داخل HTML بسيط جدًا في الواقع، يمكن أن تكون كتلة التعليمات البرمجية أبسط:
<%= عشوائي .random() %>
ولكن ماذا لو كنت تتعامل مع منطق أكثر تعقيدًا، مثل معالجة بيانات النموذج؟ يمكن معالجة بيانات النموذج تمامًا كما تتم معالجتها في برامج Python النصية. هذه نسخة طبق الأصل من Askname.py Askname.pih
<%. إذا كان QUERY.has_key ("الاسم"): %>
اسمك <%= _name %>.
<% نهاية %>
<% آخر: %>
ما اسمك؟<br />
<طريقة النموذج='POST'>
<نوع الإدخال='نص' اسم='اسم' /><br />
<نوع الإدخال='إرسال' value='متابعة' />
</النموذج>
<% end %>
لاحظ أن استخدام <% end %> سيؤدي إلى تحديد نهاية كتلة التعليمات البرمجية، تمامًا مثل المسافة البادئة في العبارة الشرطية أعلاه. البديل الآخر هو استخدام علامة المسافة البادئة، والتي يتم استخدامها أيضًا تحديد المسافة البادئة للكود
<
المسافة البادئة>
<% إذا QUERY.has_key ("الاسم"): %>
اسمك <%= _name %>.
<% آخر: %>
ما اسمك؟<br />
<طريقة النموذج='POST'>
<نوع الإدخال='نص' اسم='اسم' /><br />
<نوع الإدخال='إرسال' value='متابعة' />
</النموذج>
</indent>
فلنجرب
المزيد من الميزات
المشابهة التي يمكن استخدامها من خلال البرامج النصية لـ Python، tagtest.pyrom HTMLTags import *
print CENTER ( B ("Test." ) )
في Karrigell، ويوفر Karrigell أيضًا آلية جلسة جيدة قريبة من التوجه الكائني، فلنقم بإنشاء رمز بسيط للتوضيح في جلسة Karrigell Going بالعودة إلى المثال الأول، سيحصل المستخدم على رقم محظوظ إذا قام المستخدم بتحديث الصفحة، فسيظل الرقم موجودًا لأنه سيتم حفظ الرقم في الجلسة. بالطبع، سيكون لدى المستخدم خيار إعادة-. جلب رقم محظوظ جديد، ويتم ذلك عن طريق إغلاق sessin. قم بإنشاء خدمات Karrigell تسمى Luckynumber.ks وأدخل الكود التالي:
مستخدم
عشوائي
= Session()def Index():
إذا لم يكن "LuckyNumber" في دير (المستخدم):
user.luckyNumber = Randint (0، 20)
اطبع "رقم الحظ الخاص بك:"، user.luckyNumber
طباعة "<br /><br />"
طباعة "<a href='reset'>إعادة تعيين رقم الحظ</a>"
إعادة تعيين ديف ():
المستخدم.إغلاق()
طباعة "تم إعادة تعيين رقم الحظ الخاص بك."
طباعة "<br /><br />"
طباعة "<a href='index'>رجوع</a>"
الاستنتاج
يوفر Karrigell أربع طرق لفتح الويب، وهي نصوص Python، وخدمات Karrigell، وHTML Inside Python، وPython Inside HTML، ولكل طريقة خصائصها الخاصة ميزة واحدة مشتركة: بساطة الاستخدام. يحول Karrigell تطوير الويب إلى شيء أنيق وبسيط. سواء كنت تستخدم Karrigell بمفرده أو مع Apache، فهو أمر بسيط بشكل مدهش، بغض النظر عما إذا كان للمبتدئين أو للمحاربين القدامى، فإن Karrigell هو خيار جيد .