Author Topic: اطارات العمل Grok/webpy  (Read 632 times)

Ahmed Youssef

  • Helping Freak
  • Administrator
  • Active Member
  • *****
  • Posts: 242
    • View Profile
    • WWW
    • Email
اطارات العمل Grok/webpy
« on: January 11, 2009, 03:21:37 PM »

Grok


هو اطار عمل مبنى على مكتبات Zope

التستيب

بكل سهولة
Code: [Select]
easy_install grokproject

وبعد كدا

Code: [Select]
striky@striky-desktop:~/workspace/pytut/src/nettut$ mkdir groktut 
striky@striky-desktop:~/workspace/pytut/src/nettut$ cd groktut/

وقم بتنفيذ grokproject والحقه بإسم المشروع

Code: [Select]
striky@striky-desktop:~/workspace/pytut/src/nettut/groktut$ grokproject FirstProject

اسم المدير وليكن grok

Code: [Select]
Enter user (Name of an initial administrator user): grok 

كلمة السر (لن تظهر تم استخدام getpass لإلغاء ظهورها) اكتبها grok

Code: [Select]
Enter passwd (Password for the initial administrator user): 
Downloading info about versions...
Creating directory ./FirstProject
Invoking zc.buildout...
Develop: '/home/striky/workspace/pytut/src/nettut/groktut/FirstProject/.'
Installing eggbasket.
Getting distribution for 'grok==0.14.1'.
eggbasket: Distributions are not installed. A tarball will be downloaded.
eggbasket: Distributions are not installed. A tarball will be downloaded.
eggbasket: Downloading http://grok.zope.org/releaseinfo/grok-eggs-0.14.1.tgz ...
eggbasket: Downloading http://grok.zope.org/releaseinfo/grok-eggs-0.14.1.tgz ...
eggbasket: Finished downloading.
eggbasket: Finished downloading.
eggbasket: Extracting tarball contents...
eggbasket: Extracting tarball contents...
eggbasket: Installing eggs to /home/striky/.buildout/eggs which will take a while...
eggbasket: Installing eggs to /home/striky/.buildout/eggs which will take a while...
Getting distribution for 'grok==0.14.1'.
Got grok 0.14.1.


الآن انت جاهز
Code: [Select]
striky@striky-desktop:~/workspace/pytut/src/nettut/groktut$ cd FirstProject/

اعرض ال tree

Code: [Select]
striky@striky-desktop:~/workspace/pytut/src/nettut/groktut/FirstProject$ tree 
.
|-- bin
|   |-- buildout
|   |-- i18nextract
|   |-- i18nmergeall
|   |-- i18nstats
|   |-- test
|   `-- zopectl
|-- bootstrap.py
|-- buildout.cfg
|-- develop-eggs
|   `-- FirstProject.egg-link
|-- parts
|   |-- app
|   |   |-- debugzope
|   |   |-- runzope
|   |   `-- site.zcml
|   |-- data
|   |-- i18n
|   |   `-- configure.zcml
|   |-- test
|   `-- zopectl
|       |-- zdaemon.conf
|       `-- zope.conf
|-- setup.py
|-- src
|   |-- FirstProject.egg-info
|   |   |-- PKG-INFO
|   |   |-- SOURCES.txt
|   |   |-- dependency_links.txt
|   |   |-- entry_points.txt
|   |   |-- not-zip-safe
|   |   |-- requires.txt
|   |   `-- top_level.txt
|   `-- firstproject
|       |-- __init__.py
|       |-- app.py
|       |-- app.txt
|       |-- app_templates
|       |   `-- index.pt
|       |-- configure.zcml
|       |-- ftesting.zcml
|       |-- static
|       |   `-- README.txt
|       `-- tests.py
`-- versions.cfg

13 directories, 32 files

الهيكلية واضحة ملفات تنفيذيه وtemplates وملفات static واعدادات الخ الخ
قم بتشغيل zope



قم بتسمية التطبيق مثلا hello


اكتب فى المتصفح ذلك العنوان

Code: [Select]
localhost:8012/hello 


ستجد امامك نافذة مشابهه لهذه تخبرك بمسار ال templates لتعديلها وهى فى المسار firstprojct/app_templates/index.pt

الهيكلية كالتالى

Code: [Select]
striky@striky-desktop:~/workspace/pytut/src/nettut/groktut/FirstProject/src/firstproject$ tree 
.
|-- __init__.py
|-- __init__.pyc
|-- app.py
|-- app.pyc
|-- app.txt
|-- app_templates
|   `-- index.pt
|-- configure.zcml
|-- ftesting.zcml
|-- static
|   `-- README.txt
`-- tests.py

2 directories, 10 files

قم بفتح ذلك الملف index.pt فى ال app_templates ستجده مشابه للتالى

Code: [Select]
<html> 
<head>
</head>
<body>
  <h1>Congratulations!</h1>

  <p>Your Grok application is up and running.
  Edit <code>firstproject/app_templates/index.pt</code> to change
  this page.</p>
</body>
</html>

قم بتعديله للتالى مثلا

Code: [Select]
<html> 
<head>
<title>Index</title>
</head>
<body>
  <h1>Congratulations!</h1>

  <p>
  <b>Grok</b> is up & running
  </p>
</body>
</html>

وقم بعمل رفرش او اذهب لذلك العنوان
Code: [Select]
localhost:8012/hello


الآن التطبيق لديه view واحدة وهى index التى يتم عند استدعاءها عرض الtemplate فى الملف index.pt
افتح الملف app.py ستجده مشابه للتالى

Code: [Select]
import grok 

class Firstproject(grok.Application, grok.Container):
    pass

class Index(grok.View):
    pass # see app_templates/index.pt

    قم بإضافة 2 views وهما Hi, Bye

Code: [Select]
class Hi(grok.View): 
pass #renders app_templates/hi.pt

class Bye(grok.View):
pass #renders app_templates/bye.pt

    قم بإنشاء الملفات hi.pt و bye.pt ليتم عرضها عند استدعاء تلك الviews
الملف hi.pt

Code: [Select]
<html> 
<head>
<title>Hi</title>
</head>
<body>
  <h1>Welcome to Grok!</h1>
</body>
</html>

الملف bye.pt

Code: [Select]
<html> 
<head>
<title>Bye</title>
</head>
<body>
  <h1>Have to go :(</h1>
</body>
</html>


عند استدعاء ال hi view


عند استدعاء ال bye.view

ملحوظة: قد تريد احيانا تغيير رقم البورت الإفتراضى لzope بدل من 8080 (اللذى قد تكون اسندته لخدمة اخرى او غيره)
كل ماعليك هو اعداد ملف buildout.cfg فى القسم [zopectl]
بإضافة ذلك السطر

Code: [Select]
address = localhost:8012 
#controlling the listening port, re-run buildout script.

وقم بتشغيل ملف ال buildout

Code: [Select]
striky@striky-desktop:~/workspace/pytut/src/nettut/groktut/FirstProject$ bin/buildout 
Develop: '/home/striky/workspace/pytut/src/nettut/groktut/FirstProject/.'
Uninstalling zopectl.
Updating eggbasket.
Updating app.
Updating data.
Installing zopectl.
Generated script '/home/striky/workspace/pytut/src/nettut/groktut/FirstProject/bin/zopectl'.
Updating i18n.
The recipe for i18n doesn't define an update method. Using its install method.
i18n: setting up i18n tools
Updating test.



Where to Go?
تستطيع الذهاب الى http://grok.zope.org وتقوم بقراءة الوثائق الخاصة وتنشئ بعض التطبيقات الحقيقية

Webpy
[/b]

فريمورك بسيطة وممتازة وغير معقدة لاتحتاج منك الكثير من المفاهيم ومبنية من اجل البساطة (ربما اذا اكملت الكتاب للآن تستطيع ان تفهم كودها المصدرى )

للتستيب
Code: [Select]
easyinstall web.py

او قم بتحميلها من الموقع الرسمى http://webpy.org
وقم بتشغيل سكربت ال setup
Code: [Select]
python setup.py install 


ابسط تطبيق
Code: [Select]
import web 

urls = (
    '/(.*)', 'index'
)


class index:       
    def GET(self, name):
        return 'Hello, World!'
       
app = web.application(urls, globals())

if __name__ == "__main__":
    app.run()


1- استدعاء webpy
Code: [Select]
import web

2- انشاء ال urls على صورة tuple
Code: [Select]
    '/(.*)', 'index' 

على سبيل المثال هنا هيتم توجيه اى طلب الى الview المسماة index اللتى قمنا بتعريفها كالتالى
Code: [Select]
class index:        
    def GET(self, name):
        return 'Hello, World!'

اخيرا انشاء عنصر التطبيق
Code: [Select]
app = web.application(urls, globals()) 

وتشغيله بإستخدام الطريقة run
Code: [Select]
    app.run()



لاحظ هنا تشغيلنا للسرفر على البورت 3001 وذلك بإضافة ذلك المعامل الى السكربت عند التشغيل والاسيكون البورت 8080
striky@striky-desktop:~/workspace/pytut/src/nettut/webpytut$ python hello.py 3001
تجد العديد من الأمثلة هنا
Code: [Select]
http://webpy.org/src


مثال على انشاء بلوج بسيط بإستخدام webpy
تجده هنا
http://k4ml.com/wiki/python/webpy/simpleblog


« Last Edit: October 04, 2009, 04:52:05 PM by Ahmed Youssef »
Logged

Life is just a chance to grow a soul. - A. Powell
Weblog: http://ahmedyoussef.wordpress.com/