آموزش فریم ورک جنگو - مقدمه

آموزش فریم ورک جنگو - مقدمه

کد محصول: آموزش فریم ورک جنگو
وضعیت انبار: در انبار

مجموعه آموزش  های فریم ورک جنگو و پایتون نوشته شده توسط آقای امین اروجی - مدیر وب سایت oruji.org

آموزش فریم ورک جنگو - مقدمه  

آموزش فریم ورک جنگو – فرم هاآموزش فریم ورک جنگو – Session ها ، کاربران و عضویت

آموزش فریم ورک جنگو – شروع کار

آموزش فریم ورک جنگو –  View ها و UrlConf های پیشرفته آموزش فریم ورک جنگو – مبحث Caching  

آموزش فریم ورک جنگو – View ها و UrlConf ها    

آموزش فریم ورک جنگو – Template های پیشرفته  آموزش فریم ورک جنگو – پکیج Django.contrib

آموزش فریم ورک جنگو – Template ها  

آموزش فریم ورک جنگو – مدل های پیشرفتهآموزش فریم ورک جنگو – مبحث Middleware

آموزش فریم ورک جنگو – مدل ها 

آموزش فریم ورک جنگو – Viewهای Generic  آموزش فریم ورک جنگو – یکپارچه سازی برنامه ها و دیتابیس Legacy  

آموزش فریم ورک جنگو – سایت مدیر 

آموزش فریم ورک جنگو – تولید محتوای غیر Html ی    آموزش فریم ورک جنگو – بین المللی سازی   


آموزش فریم ورک جنگو – امنیت

آموزش فریم ورک جنگو - مقدمه

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

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

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

یک فریم ورک وب چیست؟

جنگو یک فریم ورک جدید و برجسته وب است, اما معنی دقیق یک فریم ورک چیست؟

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

یکی از آسان ترین روش های ساخت یک برنامه وب پایتون، استفاده از CGI می باشد، که در حدود سال های 1998 محبوب بود. تنها کافی است یک اسکریپت پایتون که خروجی HTML تولید می کند نوشته، سپس اسکریپت را با پسوند ".cgi" درون وب سرور ذخیره کنید و در آخر نیز صفحه را درون مرورگر خود مشاهده کنید. در اینجا یک مثال اسکریپت CGI پایتون وجود دارد که ده کتاب پایانی منتشر شده را از دیتابیس خوانده و نمایش می دهد. تنها کافیست کلیات عملیاتی که در کد زیر انجام شده است را دریابید و نگران جزئیات کد زیر نباشید.

#!/usr/bin/env python

import MySQLdb

print "Content-Type: text/html\n"
print "<html><head><title>Books</title></head>"
print "<body>"
print "<h1>Books</h1>"
print "<ul>"

connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db')
cursor = connection.cursor()
cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")

for row in cursor.fetchall():
    print "<li>%s</li>" % row[0]

print "</ul>"
print "</body></html>"

connection.close()


در ابتدا، برای تکمیل نیازمندی های CGI، در خط 5 عبارت "Content-Type" و به دنبال آن یک خط خالی چاپ شده است. در خط 5 تا 9 نیز کدهای مربوط به HTML چاپ شده، سپس به دیتابیس وصل شده و یک پرس و جو برای بازیابی اسامی ده کتاب آخر اجرا شده است. در خط 15 با یک حلقه لیست کتاب ها نمایش داده شده است و در آخر نیز HTML و connection دیتابیس بسته شده است.

فهمیدن کد بالا بسیار ساده است. حتی یک برنامه نویس مبتدی نیز می تواند این خطوط را خوانده و هر آنچه از بالا تا پایین انجام می گیرد را بفهمد. همچنین اجرای این کد نیز ساده می باشد، تنها کافی است کد را با پسوند ".cgi" ذخیره کرده و آنرا در وب سرور قرار دهید و توسط مرورگر آدرس آن را فراخوانی کنید.

اما با وجود تمام این سادگی ها، در استفاده کلی از روش بالا ممکن است با مسائل و مشکلاتی روبه رو شویم. به عنوان مثال به سوالات زیر توجه کنید:

    چه اتفاقی می افتد اگر چندین بخش از برنامه شما نیاز داشته باشند به دیتابیس وصل شوند؟ مطمئنا کد مربوط به اتصال به دیتابیس نیازی نیست در CGI اسکریپت ها به صورت منحصر به فرد تکرار شود. واقع بینانه این است که کد مربوط درون یک تابع به اشتراک گذاشته شده و بارها فراخوانده شود.
    آیا یک توسعه دهنده (developer) باید در مورد چاپ کردن خط "Content-Type" و بیاد آوردن بستن connection دیتابیس همواره نگرانی داشته باشد؟ این قبیل مسائل باعث کاهش باروری برنامه نویس و بالا رفتن احتمال اشتباه می شود.
    چه اتفاقی می افتد هنگامی که این کد در محیط های مختلف برای دیتابیس های مختلف استفاده شود؟ در این صورت تنظیمات مختلف برای هر دیتابیس و محیط یک امر ضروری می باشد.
    چه اتفاقی می افتد هنگامی که یک طراح وب، کسی که هیچ آشنایی و تجربه ای در مورد کد پایتون ندارد بخواهد صفحه را دوباره طراحی کند؟ ایده آل آن است که منطق مربوط به قسمت های خواندن اطلاعات از دیتابیس و نمایش آنها از هم جدا شوند، و اطلاعات خوانده شده درون یک صفحه Html نمایش داده شود تا طراح بتواند صفحه را طراحی کند.

این مشکلات دقیقا مسائلی می باشند که یک فریم ورک وب قصد حل کردن آن را دارد. یک فریم ورک وب درست مانند یک زیرساخت برای برنامه های شماست، به طوری که بتوانید به روی تمیز برنامه نوشتن یا کد قابل اصلاح بدون دوباره نویسی تمرکز کنید، خلاصه اینکه جنگو تمام وظایف ذکر شده را انجام می دهد.

الگوی طراحی MVC

بیایید یک مثال که تفاوت بین روش قبلی و روش با استفاده از فریم ورک وب را نشان می دهد را مورد بررسی قرار دهیم. در اینجا نحوه نوشتن کد قبلی CGI را با استفاده از جنگو نشان داده شده است. اولین چیزی که باید توجه کنید این است که ما عملیات انجام شده در کد قبلی را در سه فایل پایتون (models.py، views.py، urls.py) و یک فایل HTML (latest_books.html) از هم جدا کرده ایم:

آموزش فریم ورک جنگو - مقدمه

# models.py (the database tables)

from django.db import models

class Book(models.Model):
    name = models.CharField(max_length=50)
    pub_date = models.DateField()


# views.py (the business logic)

from django.shortcuts import render_to_response
from models import Book

def latest_books(request):
    book_list = Book.objects.order_by('-pub_date')[:10]
    return render_to_response('latest_books.html', {'book_list': book_list})


# urls.py (the URL configuration)

from django.conf.urls.defaults import *
import views

urlpatterns = patterns('',
    (r'^latest/$', views.latest_books),
)


# latest_books.html (the template)

<html><head><title>Books</title></head>
<body>
<h1>Books</h1>
<ul><ul/>
{% for book in book_list %}
<li>id="19"<li/>
{{ book.name }}
</li>

{% endfor %}
</ul>
</body></html>


دوباره، درباره کد بالا و کارکرد آن نگران نباشید؛ تنها پیدا کردن فهم کلی نسبت به طراحی آن کافی است. نکته اصلی مورد توجه اینجا قسمت های مختلف جدا شده از هم می باشد:

    فایل models.py حاوی یک توضیح از جدول دیتابیس می باشد که بصورت کلاس پایتون نمایش داده شده است. این کلاس یک model نامیده می شود. با استفاده از آن شما می توانید رکوردهای درون دیتابیس را با استفاده از کد ساده پایتون ساخته، بازیابی، به روز سازی و حذف کنید.
    فایل views.py حاوی منطق های برنامه نویسی برای صفحه می باشد. تابع latest_books() با نام view شناخته می شود.
    فایل urls.py نسبت به url داده شده view مورد نظر را تعیین می کند. در مثال فوق /latest/ با تابع latest_book() مرتبط خواهد شد. به زبان ساده تر، اگر دامنه شما example.com است، هر بازدیدی از آدرس http://example.com/latest/ تابع latest_book() را فراخوانی خواهد کرد.
    فایل latest_books.html یک قالب HTML است که طرح صفحه در آن قرار می گیرد. این قالب از یک زبان template با جملات منطقی پایه مانند {% for book in book_list %} استفاده می کند.

قسمت های فوق یک الگو را دنبال می کنند که Model-View-Controller یا (MVC) نامیده می شود. به عبارت ساده MVC یک روش برای توسعه دادن نرم افزار است به طوری که کد برای تعریف کردن و دسترسی داشتن داده (the model) از منطق (the controller) جدا شده و آن نیز از رابط کاربر (the view) جدا می باشد. (ما در مورد MVC در آموزش مدل جنگو به طور مفصل بحث خواهیم کرد.)

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

در این کتاب، هر بخش از MVC درون فصل خود بحث شده است. آموزش view و urlconf جنگو views را پوشش می دهد، آموزش template جنگو templates را و آموزش مدل جنگو نیز models را پوشش می دهد.


نظر بدهید

توجه: HTML ترجمه نمی شود!

امتیاز بد           خوب

«تاریخچه جنگو»

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

اگر شما برای مدتی برنامه تحت وب ساخته باشید، شاید با مشکلات CGI، مانند مثال قبلی کتاب که پیش تر توضیح داده شد، آشنا شده باشید. مسیر توسعه دهندگان وب شکلی شبیه به این داشته است:

  *  نوشتن یک برنامه وب از ابتدا.
  *  نوشتن یک برنامه دیگر از ابتدا.
  *  پی بردن به اینکه برنامه در گام اول اشتراکات عمومی زیادی با برنامه در گام دوم دارد.
  *   تغییر کد به طوری که برنامه اول بتواند کد خود را با برنامه دوم به اشتراک بگذارد.
  *   تکرار کردن گام های 2-4 به صورت چند بار.
  *   درک کردن ساخت یک فریم ورک.

جنگو از برنامه های real-word نوشته شده توسط تیم توسعه دهندگان وب در لارنس، کانزاس آمریکا رشد کرد. جنگو در پاییز سال 2003 متولد شد، هنگامی که برنامه نویسان وب در روزنامه Journal-World، آدریان هولاوتی و سیمون ویلیسون استفاده از پایتون را برای ساختن برنامه ها شروع کرده بودند.

تیم World Online مسئولیت تولید و نگهداری چندین سایت اخبار محلی را به عهده داشت، که در یک محیط کاری همراه با ضرب العجل های روزنامه نگاری رشد کرده بود. برای سایت های LJWorld.com، Lawrence.com، و KUsports.com روزنامه نگاران و مدیران خصوصیات جدیدی با برنامه کاری به شدت پر سرعت را درخواست کردند. در نتیجه سیمون و آدریان یک فریم ورک توسعه وب با صرفه جویی در زمان را توسعه دادند که آن تنها راهی بود که می توانستند برنامه های قابل پشتیبانی در ضرب العجل های سریع را بسازند.

در تابستان سال 2005، بعد از توسعه این فریم ورک، جایی که برای ایجاد سایت های World Online بیشترین تاثیر را داشت، و همچنین هنگامی که جاکُب کاپلان مُس، به آنها ملحق شد، تصمیم گرفته شد فریم ورک به صورت نرم افزار کد باز (open source) منتشر شود. آنها فریم ورک خود را در جولای سال 2005 با نام جنگو منتشر کردند، به یادبود گیتاریست سبک جاز "جنگو رینهارت".

حالا چندین سال بعد، جنگو یک پروژه کد باز خیلی مشهور با ده ها هزار کاربر و حامی پخش شده در سراسر دنیا می باشد. دو تن از توسعه دهندگان اصلی World Online (آدریان و جاکُب) هنوز هدایت مرکزی برای رشد فریم ورک را انجام می دهند، اما جنگو حاصل تلاش و همکاری فراوان کل گروه است.

این تاریخچه مربوط به بحث می باشد زیرا به توضیح دو موضوع کلیدی کمک می کند. اول موقعیت خوب جنگو. از آنجایی که جنگو در یک محیط اخبار متولد شده است، می تواند خصوصیات مختلفی از قبیل سایت مدیر، (که در سایت مدیر به آن پرداخته شده است)را ارائه دهد که به ویژه برای سایت های محتوی (content) مانند Amazon.com، craigslist.org و washingtonpost.com که اطلاعات پویا را ارائه می دهند، مناسب می باشند. البته این بدان معنی نیست که جنگو فقط برای توسعه دادن آن دسته از سایت ها خوب می باشد، اما این موضوع مانعی برای موثر بودن جنگو برای ساختن انواع دیگر وب سایت های پویا نمی باشد. (بین موثر بودن در چیزی به طور ویژه و بی تاثیر بودن در بقیه چیزها تفاوت بسیار است.)

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

«طریقه خواندن کتاب»

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

با در نظر گرفتن این، ما توصیه می کنیم که فصل های اول تا دوازده را به ترتیب به طور کامل بخوانید. این فصل ها پایه و اساس جنگو و نحوه استفاده از آن را تشکیل می دهند. تنها با خواندن این دوازده فصل شما قادر به ساختن و گسترش وب سایت ها با استفاده از جنگو خواهید بود. به طور خاص فصل های اول تا هفتم هسته جنگو، فصل های هشتم تا یازدهم استفاده های پیشرفته از جنگو، و فصل دوازدهم گسترش (deployment) را پوشش می دهند. فصل های باقیمانده، سیزدهم تا بیستم، بر روی خصوصیات ویژه جنگو می باشد.
دانش مورد نیاز برنامه نویسی

خوانندگان این کتاب باید قوائد برنامه نویسی شیءگرا را بدانند: ساختار های کنترلی (مانند، if، while، for)، ساختارهای داده (lists، hashes/dictionaries)، متغیرها، کلاس ها و شیء ها (objects).

ممکن است شما فکر کنید تجربه در توسعه وب می تواند بسیار مفید باشد، اما این موضوع یک پیش نیاز برای فهم این کتاب نیست. در سرتاسر این کتاب، ما سعی کردیم از بهترین تمرین ها در توسعه وب برای خوانندگانی که تجربه کمی دارند استفاده کنیم.

«دانش مورد نیاز پایتون»

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


Has no item to show!