به سامانه آموزشی رولیکا خوش آمدید ... در صورتی که مدرس یا مربی هستید اولین پکیج آموزشی خود را در رولیکا ایجاد نمایئد.

فریم ورک Django و تاثیر پایتون برآن

اگر بخواهیم تعریفی کلی و اجمالی برای فریم ورک Django و تاثیر پایتون برآن مطرح کنیم این معرفی بصورت زیر خواهد بود :

جنگو (Django) یک فریم ورک سطح بالا به زبان پایتون برای وب می باشد که امکان طراحی و ایجاد بسیار سریع و آسان برنامه های تحت وب را فراهم می کند .

در ادامه به بررسی بیشتر این ابزار و همچنین توضیح و بست تعریف فوق می پردازیم . جنگو یک فریم ورک سطح بالا با زبان پایتون می باشد. یک فریم ورک و چهار چوب سطح بالا برای وب نرم افزاری می باشد که باعث سهولت ایجاد وب سایت هایی داینامیک می شود . یک فریم ورک سطح بالا بسیاری از موارد برنامه نویسی را بصورت خودکار فراهم کرده و در اختیار برنامه نویس قرار می دهد.

همچنین روش هایی میانبر و واسط برای اجرای اعمال مختلف را دارا می باشد . پس برنامه نویس نیازی به نوشتن کد هایی اضافی و مشخص را ندارد .


یک وب سایت دایانامیک و پویا وبسایتی هست که شامل کد های ساده Html نبوده بلکه بصورت پویا و توسط نرم افزار (web application) تگ های اچ تی ام ال و در حقیقت صفحات سایت از روی کد ها و دستورات نوشته شده توسط برنامه نویس ایجاد می گردد . برای مثال ممکن است بر اساس در خواست کاربر اطلاعاتی بصورت داینامیک از پایگاه داده دریافت و نمایش داده شود .

ویژگی های یک فریم ورک Django خوب عبارتند از :

مکانیسمی برای نگاشت URL درخواست شده به کدهایی که وظیفه پاسخ دادن به آن درخواست را دارند (به عبارت دیگر امکان تعیین اینکه کدام کد یا تابع مسئول جواب دادن به آدرس درخواست شده می باشد . برای مثال می توان از فریم ورک خواست تا برای آدرسهایی شبیه به /users/joe/ کدی را اجرا کند که اطلاعات کاربران را نمایش می دهد.)

تسهیل نمایش ، اعتبار سنجی و نمایش مجدد فرم های html

فرم های اچ تی ام ال یکی از مهترین روش ها برای دریافت اطلاعات از یک کاربر وب می باشد . پس یک فریم ورک خوب باید دارای روش هایی مناسب برای نمایش و کار با این فرم ها باشد . (برای مثال امکان مشخص کردن خطاهای رخ داده)

تبدیل اطلاعات وارد شده توسط کاربر به ساختاری مناسب برای مدیریت و استفاده

(برای مثال تبدیل اطلاعات وارد شده در یک فرم اچ تی ام ال به ساختاری متناسب با زبان مورد استفاده)

امکان جداسازی محتوا از ظاهر نمایشی

در اکثر زبانهای موجود برنامه نویسی کد های اچ تی ام ال و در حقیقت ظاهر یا template سایت با کد ها و محتوای سایت آمیخته می گردد که باعث سختی و ایجاد مشکلاتی هنگام تغییرات بعدی و نگهداری می گردد . با استفاده از این روش ظاهر نمایشی سایت بصورت جداگانه در فایلی خاص ذخیره می گردد . اکنون با اعمال تغییر در هر کدام نیازی به ویرایش دیگری نیست و این دو مجودیتی مستقل می باشد .

امکان درونی سازی آسان با لایه اطلاعات ذخیره شده (storage)

در حالت معمول هر برنامه نوشته شده با جنگو دارای ۳ لایه مهم می باشد . بخش نمایشی (template) ، محتوا یا کد های کنترلی و بخش ذخیره دائمی اطلاعات (برای مثال پایگاه داده) . البته بسته به نوع برنامه و خواست برنامه نویس می توان این لایه ها را ادغام کرده یا نادیده گرفت .

امکان استفاده موثر از سطح بالایی از تجرید و انتزاع

جنگو در موارد زیادی با استفاده از مفهوم انتزاع سهولت بسیاری را فراهم کرده است . برای مثال برای کار با تکنولوژی چون ftp یا http با یک مفهوم انتزاعی و سطح بالا روبرو خواهید بود که با استفاده از روابط و توابع متعدد برنامه نویسی را بسیار آسان و قدرتمند می کند . البته امکان نفوذ و استفاده از سطوح پایین تر نیز فراهم است .

حذف موارد و مشکلات معمول در برنامه نویسی وب

حذف و رفع موارد و مشکلات معمول در برنامه نویسی سمت وب . برای مثال حذف پسوند فایل از آدرس های وب (aspx. یا php.) فریم ورک django تمامی موارد فوق را دارا می باشد . این فریم ورک با استفاده از زبان زیبا ، قدرتمند و سطح بالای پایتون نوشته شده است . برای ایجاد وب سایت برنامه نویس کدهای پایتونی می نویسد که امکان استفاده از ویژگی های پایتون و کتابخانه های این زبان را دارد .

تاثیر پایتون بر فریم ورک Django

کل این فریم ورک با استفاده از زبان پایتون پیاده سازی شده است . پس بسیاری از ویژگی های خود را از زبان پایتون به ارث برده است . با استفاده از این فریم ورک امکان ایجاد وب سایت هایی حرفه ای و پیچیده در کمترین زمان ممکنه و همچنین با در نظر گرفتن مورادی چون امنیت و سرعت و … فراهم می باشد . در ادامه برخی از ویژگی های قابل تاکید زبان پایتون که تاثیر مهمی بر این فریم ورک دارند مطرح می گردد .

پایتون زبانی تفسیری بوده و برای اجرا نیازی به کامپایل ندارد. در برنامه نویسی وب با استفاده از این ویژگی بعد از تغییر کد یا ایجاد آن نتایج کار بلافاصله قابل مشاهده می باشد .

انواع داده در پایتون داینامیک می باشد. پس شما نگرانی از تعریف نوع متغییر ندارید .

ساینتکس زبان پایتون کوتاه و در عین حال واضح و قابل فهم می باشد. این بدین معنی هست که برای انجام کار های مشابه کدی بسیار کمتر لازم می باشد . برای مثال معمولا هر خط پایتون معادل ۱۰ خط در جاوا (Java) می باشد !!

پایتون روشهایی قدرتمند برای meta-programming در اختیار قرار می دهد . این ویژگی امکان ویرایش با اضافه کردن رفتار ها و توابع را با اشیا در زمان اجرای برنامه فراهم می کند .

جدایی از ویژگی های فوق جنگو خود روشهایی برای افزایش سرعت و سهولت برنامه نویسی همزمان با رعایت کامل موارد امنیتی و کارایی را دارا می باشد . که در ادامه با برخی از این ویژگی ها بیشتر آشنا خواهیم شد .

ایجاد وب سایتی با طرح و ساختار درست و تمیز

جنگو با استفاده از قوانین از پیش تعیین شده و روش هایی مختلف باعث ایجاد برنامه هایی با سرح و ساختار درست و تمیز می گردد . بنابراین نگهداری و توسعه برنامه های نوشته شده با این فریم ورک بسیار آسان تر خواهد بود .

جنگو از ایجاد برنامه هایی با آمیختگی و روابط نادرست جلوگیری می کند . با استفاده از این ویژگی، برنامه به بخش هایی مستقل و مجرا تقسیم می شود که هر یک بدون نیاز به اعمال تغییرات در بقیه قسمت ها قابل تغییر بوده با استفاده از روابط (API) واضح و بهینه با یکدیگر در ارتباط هستند .

برای مثال سیستم ظاهر نمایشی (templates) هیچ گونه اطلاعاتی از سیستم پایگاه داده و ذخیره اطلاعات یا لایه مربوطه به پاسخگویی به درخواست های کاربران یا نهان سازی اطلاعات برای استفاده های بعدی (cache) ندارد . هر کدام از این بخش ها بصورت جداگانه بوده و در صورت نیاز با استفاده از رابط هایی با یکدیگر تبادل اطلاعات کرده یا درخواستی را ارسال می کنند .

جنگو از ساختار
MVC یا Model-View-Controller تبعیت می کند . پس کد های مربوط به کار با داده ها (model) و بخش کنترلی (controller) یا bussiness logic و بخش مربوط به رابط کاربر (view) از هم جدا می باشد . برای روشن شدن هرچه بیشتر موضوع این ویژگی با استفاده از یک مثال شرح داده می شود

مشکلات معمول در برنامه نویسی وب

کد زیر یک برنامه بسیار ساده با زیان پی اچ پی (PHP) می باشد . این برنامه لیستی از اشخاص را از پایگاه داده MySQL استخراج و با استفاده از یک ساختار ساده نمایش می دهد .

<html>
<head><title>Friends of mine</title></head>
<body>

<h1>Friends of mine</h1>

<ul>

<?php
$connection = @mysql_connect("localhost", "my_username", "my_pass");
mysql_select_db("my_database");
$people = mysql_query("SELECT name, age FROM friends");
while ( $person = mysql_fetch_array($people, MYSQL_ASSOC) ) {
?>
<li>
<?php echo $person['name'] ?> is <?php echo $person['age'] ?> years old.
</li>
<?php } ?>

</ul>

</body>
</html>

چون تمامی کد در یک فایل نوشته شده است شاید روش مناسبی برای برنامه نویسان تازه کار باشد . اما مشکلاتی در این روش برنامه نویسی موجود است :

آمیختگی ظاهر نمایشی با کد برنامه

در تکنولوژی MVC که جنگو نیز از آن بهره می برد ظاهر نمایشی (یعنی تگ های اچ تی ام ال) یا template سایت در فایلی جدا ذخیره می گردد . بخش کنترلی نیز به عنوان ماژول پایتون ایجاد و ذخیره می گردد . اکنون برنامه نویس با بخش کنترلی و طراح با بخش html سروکار خواهد داشت .

 آمیختگی کد مربوط به پایگاه داده با کدهای کنترلی

علاوه بر مشکل فوق این مورد باعث افزونگی نیز می گردد . اگر برای مثال شما نام پایگاه داده را تغییر دهید باید دستور sql را تغییر دهید و ممکن است این تغییر در بخش های مختلفی صورت گیرد . با استفاده از MVC یک لایه واحد و انتزاعی از محل ذخیره سازی اطلاعات ایجاد می گردد که مسئول انجام کلیه درخواست های مربوط به دسترسی به داده ها می باشد .

در حالتی که شما از پایگاه داده استفاده کنید نیازی به نوشتن دستورات sql نبوده بلکه با استفاده از دستورات پایتون با اطلاعات و داده ها سروکار دارید . پس برای مثال اگر نام یک فیلد تغییر کند کافیست در یک جا نام آن را تغییر دهید .

کد نوشته شده با آدرس اینترنتی (URL) گره خورده است

برای مثال اگر این فایل php در مسیری چون foo/index.php/ باشد این فایل برای تمامی درخواست های این مسیر اجرا خواهد شد . حال اگر بخواهیم همین فایل درخواست های مسیر /bar/ را هم اجرا کند به مشکل بر می خوریم ! در فریم ورک جنگو مسیر اینترنتی غیر وابسته به مسیر فایل روی هارد دیسک سرور و کد مربوطه می باشد .

به عبارت دیگر با روشی خاص هر مسیر را به کدی دلخواه در مسیر دلخواه نگاشت می کنیم . اکنون درخواست های مربوطه به آن مسیر خاص به کد مربوطه ارجاع می گردد.

نوشتن پارامتر های مربوط به اتصال پایگاه داده و نوع پایگاه داده در فایل اصلی برنامه

نوشتن اطلاعات مربوط به اتصال پایگاه داده در داخل کد اصلی برنامه صحیح نمی باشد . چون این اطلاعات تنظیمات برنامه می باشد نه برنامه نویسی منطقی برنامه . جنگو یک محل واحد برای ذخیره اطلاعات و تنظیمات برنامه دارد . پس براحتی می توان تغییراتی چون تغییر نوع پایگاه داده را انجام داد .

موراد ذکر شده در این کد PHP تنها مثالی برای بررسی موارد و مشکلات معمول بود . بطور حتم با زبان PHP و البته با کمی زحمت بیشتر و نوشتن بسیاری از بخش ها بصورت دستی می توان موارد فوق را پیاده سازی کرد .

بخش های مختلف فریم ورک Django

 هسته مرکزی و اصلی

هسته اصلی و مرکزی جنگو از سه بخش اصلی تشکیل شده است . همچنین بخش مرکزی جنگو شامل موارد دیگری می باشد که عبرتند از :

یک سیستم برای معتبر سازی وserialization فرم های اچ تی ام ال

یک وب سرور مستقل و کوچک که برای تست برنامه هنگام توسعه آن استفاده می گردد.

یک فریم ورک نهان سازی اطلاعات برای استفاده مجدد یا کش (cache) که روش های مختلف کش را در اختیار قرار می دهد.

حمایت از ابزار های میانی (middleware) که امکان اجرای توابع و دستورات مورد نظر را در بخش های مختلف پردازش یک درخواست فراهم می کند.

یک توزیع کننده (dispatcher) درونی که به بهش ای مختلف یک برنامه وب امکان دریافت سیگنا لها و رویداد های مختلف را می دهد .

سیستم بین الملل سازی (internationalization) که حتی اماکن ترجمه بخش های مختلف جنگو به زبان های مختلف را فراهم می کند .

  • یک سیستم برای تسلسل و سری سازی (serialization) که امکان کار با انواع داده های مبتنی بر XML و JSON و در حالت کلی آژاکس (AJAX) را فراهم می کند .
  • سیستمی برای توسعه قابلیت های موتور قالب (template)

 

سایر بخش های فریم ورک Django

 

بسته جنگو همچنین شامل ابزار ها و برنامه های جانبی مختلفی می باشد که در داخل بسته contrib قرار دارند . برخی آز این ابزار ها عبارتند از :

  • یک سیستم تصدیق و شناسایی کاربر (authentication) قابل توسعه
  • یک رابط مدیریتی داینامیک و پویا
  • ابزار هایی برای ایجاد RSS و Atom
  • سیستم نظر دهی (commenting) قابل انعطاف و توسعه
  • ابزار هایی برای تولید Google Sitemaps
  • ابزار های امنیتی برای جلوگیری از حملات cross-site request forgery
  • کتابخانه های قالب (tamplate) که امکان استفاده از زبان های نشانه گذاری سبک و کوچک چون Textile و Markdown را فراهم می آورد

سرور های قابل استفاده

Django با استفاده از ماژول mod_python بخوبی بر روی وب سرور آپاچی (apache) اجرای می گردد . همچنین بر روی تمامی سروی هایی که از WSGI حمایت کنند (اکثر سرورهای موجود) قابل اجرا می باشد . همچنین جنگو توانایی راه اندازی سرور FastCGI را دارا می باشد که بدین تریتب می توان از جنگو در داخل هر وب سروری که از FastCGI پشتیبانی می کند استفاده کرد .سرورهای زیر بطور رسمی پشتیبانی می شود و با استفاده از جنگو قابل اسفتاده می باشد .

 

  • PostgreSQL
  • MySQL
  • SQLite
  • Oracle

ابزار و بخش های لازم برای پشتیبانی از سرور SQL مایکروسافت نیز در حال توسعه می باشد . (در مراحل آزمایشی قرار دارد )

 

تبدیل از django به Json

به کمک این بسته میتوانید فایل های Django را به فایل Json تبدیل کنید

http://pypi.python.org/pypi/djason/0.1

 

سخن پایانی

این فریم ورک با استفاده از ویژگی های ذاتی و بسیار روش هایی جدید و موثر در ایجاد وب سایت های فراهم نموده است . مهمتر از همه تمامی بخش های این فریم ورک آزاد بوده و بصورت رایگان در دسترس تمامی افراد قرار دارد . هم اکنون سایت های بسیاری چون سایت واشنگتن پست یا سیستم رای گیری گنگره کشور امریکا از این فریم ورک استفاده می کنند

ارسال دیدگاه

Your email address will not be published. Required fields are marked *

توسط
تومان