سفارش تبلیغ
صبا ویژن

برنامه های وب

برنامه های وب

شما می دانید چگونه اسکریپت های مفید پایتون را بنویسید ، و اکنون می خواهید آنها را به جهانیان نشان دهید ... اما چگونه؟ اکثر برنامه نویسان غیر برنامه نویسی برای فایلهای اسکریپت .py شما استفاده نخواهند کرد . برنامه هایی مانندPyInstaller و cx_Freeze کمک می کنند تا اسکریپت های پایتون را به برنامه های اجرایی تبدیل کنند که توسط خودشان بر روی سیستم عامل های مختلف اجرا شوند بدون اینکه نیازی به استفاده از پایتون برای تفسیر کد باشد. با این حال ، بیشتر و بیشتر ، ما شاهد روند دور از برنامه های مبتنی بر "دسک تاپ" و به سمت برنامه های وب هستیم که از طریق مرورگرهای اینترنتی قابل دسترسی و اجرا هستند.

طراحی سایت

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

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

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

طراحی وب سایت در تبریز

موتور برنامه Google

وظیفه دریافت کد پایتون برای اجرای وب سایت امری پیچیده است ، اما تعدادی چارچوب وب مختلف برای پایتون در دسترس است که بطور خودکار جزئیات را مورد توجه قرار می دهند.

اولین چیزی که شما نیاز دارید یک برنامه میزبانی وب است که امکان اجرای کد پایتون را امکان پذیر و پشتیبانی می کند. از آنجا که این هزینه ها معمولاً هزینه دارند (و از آنجا که همه حتی یک وب سایت ندارند) ، ما با یک جایگزین رایگان که یکی از ساده ترین راه اندازی ها است ، می گیریم: Google App Engine که از یک چارچوب وب به نام webapp2 استفاده می کند .

تعدادی گزینه دیگر (هم رایگان و هم با هزینه) وجود دارد که قابل تنظیم تر هستند و می توانید بعداً به خودی خود از webapp2 و بدون تکیه بر Google App Engine استفاده کنید ، اما شروع کار با Google App Engine سریعترین و ساده ترین راه برای شروع است یادگیری در مورد توسعه برنامه های وب در پایتون.

دانلود

ابتدا ، برای دانلود و نصب Python SDK ( کیت توسعه نرم افزار ) مناسب برای Google App Engine ، به اینجابروید . این SDK خاص شامل دو منبع اصلی است: برنامه "وب سرور" ، که به شما امکان می دهد برنامه های وب خود را بر روی رایانه شخصی خود اجرا کنید بدون اینکه آنها را به صورت آنلاین قرار دهید ، و راه‌انداز Google App Engine ، که به شما در دسترسی به برنامه های وب شما کمک می کند. 

شرکت طراحی وب سایت در تبریز

توجه : متأسفانه ، Google App Engine فقط با پایتون 2.7 کار می کند و هیچ برنامه ای فوری برای پشتیبانی از کد پایتون 3 ندارد.

Request-Response

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

طراحی فروشگاه اینترنتی در تبریز

  1. First, your user makes a “request” for a particular webpage on your website (i.e., by typing a URL into a browser).
  2. This request gets received by the web server that hosts your website.
  3. The web server uses App Engine to look at the configuration file for your application. App Engine matches the user’s request to a particular portion of your Python script.
  4. This Python code is called up by App Engine. When your code runs, it writes out a “response” webpage.
  5. App Engine delivers this response back to your user through the web server.
  6. The user can then view the web server’s response (i.e., by displaying the resulting webpage in a browser).

سئوکار در تبریز

Static Web App

طراحی سایت در تبریز

The application we’re going to create will rely on a couple different files, so the first thing we need to do is make a project folder to hold all of these files.

Project Setup

Create a new folder named “first_app” anywhere you like (just remember where it is). First we will write a very simple Python script that can “respond” with the content of your webpage:

print "Content-Type: text/plain"
print ""
print "Congratulations, it"s a web app!"

Save this code in a script named hello.py inside your “first_app” folder.

So what’s with the first two print statements? Web servers communicate with users (usually browsers) through HTTP by receiving HTTP requests and sending HTTP responses. The HTTP response that our application sends can have both header lines and a body.

ما در خط اول یک خط هدر به پاسخ HTTP اضافه کردیم. خطوط سربرگ حاوی اطلاعات اختیاری است تا به مرورگر اطلاع دهد که چگونه بدنه پاسخ را تفسیر کند. در این حالت ، تنظیم Content-Typeبرابر بودن مقدار هدر ما بهtext/plainروشی است که پاسخ HTTP ما به یک مرورگر امکان می دهد از بدن انتظار داشته باشد که متن متن را بر خلاف کد HTML ، یک تصویر یا انواع دیگری از پرونده ها درج کند. ترک یک خط خالی پس از این خط هدر به این صورت است که به مرورگر گفتیم ، "خط های هدر اکنون تمام شده اند. در اینجا بدن واقعی برای نمایش آمده است. "

بدنه پاسخ همان چیزی است که در هنگام بارگیری صفحه در یک مرورگر ، واقعاً مشاهده خواهیم کرد. در این حالت ، این فقط یک متن ساده است: "تبریک می گویم ، این یک برنامه وب است!"

پیکربندی YAML

قبل از اینکه بتوانیم برنامه وب خود را اجرا کنیم ، باید یک فایل پیکربندی App Engine را ارائه دهیم . این فایلی است که وب سرور برای بدست آوردن اطلاعاتی درباره کد پایتون که می خواهیم آن را اجرا کند از آن استفاده می کند. ویرایشگر متن را باز کنید و متن زیر را در یک پرونده جدید کپی کنید:

application: hello
version: 1
runtime: python27
api_version: 1
threadsafe: false
handlers:
- url: /.*
  script: hello.py

سئوکار تبریز

اکنون این فایل را نام app.yaml و ذخیره آن در همان "first_app" پوشه را به عنوان اسکریپت پایتون.

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

پرونده پیکربندی YAML به تمام برنامه های لازم برای اجرای برنامه وب به برنامه موتور می دهد:

  1. اول ، application: helloیک نام شناسایی منحصر به فرد برای برنامه فراهم کنید تا بتوانیم بعداً آن را راه اندازی کنیم. ما در حال ارائه نام helloبه برنامه وب خود هستیم.
  2. در مرحله بعد ، خط به version: 1App Engine اجازه می دهد که این نسخه 1 از برنامه ما است. (اگر این مورد را بعداً بروزرسانی کنیم version: 2، App Engine یک نسخه از نسخه 1 را در حافظه نگه می دارد تا در صورت لزوم بتوانیم به اجرای نسخه قبلی برگردیم.)
  3. خطوط runtime: python27و api_version: 1به App Engine می دانیم که می خواهیم از پایتون 2.7 برای اجرای برنامه استفاده کنیم.
  4. خط threadsafe: falseبه این معنی است که برنامه وب ما به گونه ای طراحی نشده است که بتواند چندین درخواست را به طور همزمان دریافت کند. اگر App Engine چندین درخواست داشته باشد ، آنها را یکجا و بجای همه به یکباره به برنامه ما ارسال می کند.
  5. سرانجام ما handlersبرای رسیدگی به درخواست های صفحه وب مختلف از کاربران خود تعریف می کنیم (به عنوان مثال ، اگر کاربر صفحه اصلی را در "/" یا یک صفحه دیگر با آدرس دیگری در سایت ما درخواست کرد). این مسیرهای درخواست شده را می توان هر یک را به قسمت دیگری از کد پایتون اختصاص داد. در این حالت ، ما فقط یک اسکریپت ، hello.py داریم, so we want to direct user requests for any page on the website to the same script. In these last two lines of the configuration file, we say that any URL matching the regular expression /.* (which is any URL on our site) should be directed to the hello.py script.

بررسی سلامت عقل!

باشه ، حالا بالاخره میتونیم به برنامه خودمون نگاه کنیم!

هنوز آنلاین نیست ، اما می توانیم با اجرای برنامه از طریق سرور وب محلی "خود" (که توسط سایر کاربران قابل دسترسی نیست) را با استفاده از Google App Engine مشاهده کنیم. این به ما کمک می کند تا یک بار برنامه ما بصورت آنلاین ، شبیه سازی شود که چه چیزهایی به نظر کاربر می رسد.

برنامه Google Launcher Engine Engine را باز کنید ، سپس File -> Add Existing Application ... را انتخاب کنید ... سپس می توانید پوشه "first_app" خود را که حاوی برنامه وب است ، مرور کرده و انتخاب کنید. برنامه را با استفاده از درگاه 8080 اضافه کنید ، سپس برنامه را در پنجره اصلی انتخاب کرده و بر روی دکمه سبز "Run" کلیک کنید.

توجه : کاربران لینوکس - شما باید قبل از پوشه "first_app" (یعنی دایرکتوری اصلی آن) در ترمینال خود به دایرکتوری بروید ، سپس دستورالعمل زیر را برای راه اندازی برنامه وب تایپ کنید (که به طور پیش فرض روی پورت 8080 اجرا خواهد شد). ):google_appengine/dev_appserver.py first_app/

پنجره کنسول که ظاهر می شود اطلاعات زیادی را ردیابی می کند ، اما وقتی یک مکان نما چشمک می زنید ، برنامه وب شما در حال اجراست.

می توان تصور کرد که شماره "پورت" برای انتخاب کانال خاصی برای استفاده ، مانند پخش یک کانال تلویزیونی یا رادیویی است. ما تصمیم گرفتیم که برنامه وب را در درگاه 8080 اجرا کنیم ، به این معنی که کاربر می تواند در این شماره درگاه "تنظیم" کند و از سرور وب ما ارتباط برقرار کند. (ما می توانیم با استفاده از یک عدد پورت متفاوت ، میزبان یک برنامه کاملاً متفاوت وب باشیم و این دو با یکدیگر تداخل نداشته باشند.)

پس از اجرای برنامه وب (این ممکن است کمی طول بکشد) ، می توانیم برای دیدن برنامه وب در مرورگر وب پیش فرض ، روی "مرور" کلیک کنید. با این کار صفحه در URL "localhost: 8080" باز می شود (که می توان برای بارگیری برنامه وب ، به صورت دستی یک مرورگر را تایپ کرد). آدرس وب "localhost" فقط راهی برای گفتن "آدرس وب رایانه شخصی من" است (از آنجا که این برنامه هنوز آنلاین نیست). ": 8080" مشخص می کند که باید در بندر 8080 به برقراری ارتباط گوش فرا دهیم.

اگر همه چیز به درستی تنظیم شده است ، مرورگر شما باید صفحهای را بارگذاری کند که متن ساده را نشان می دهد: تبریک می گویم ، این یک برنامه وب است!

توجه : اگر تغییری در اسکریپت خود ایجاد کرده اید ، تا زمانی که Google پرتاب موتور برنامه هنوز برنامه شما را اجرا کرده است ، تنها کاری که باید برای مشاهده جدیدترین نسخه برنامه وب انجام دهید ، ذخیره اسکریپت و بارگیری مجدد صفحه وب است. App Engine بطور خودکار هر تغییری را که ممکن است ایجاد شده گوش کند.

برنامه WSGI

خوب ، این یک شروع است. با این حال ، هرچه که یک "برنامه" پیش رود ، اسکریپت پایتون درگیر نسبتاً بی فایده بود. برای اینکه کاری با کمی پتانسیل بیشتر داشته باشیم ، باید یک کد خاص را در کد پایتون خود به نام WSGIApplication ایجاد کنیم. WSGI مخفف Web Server Gateway Interface است و روشی برای این امکان است که پایتون بتواند با سرور وب ارتباط برقرار کند و به روشی بهتر از آن است که به سادگی چاپ کردن یک تکه از اطلاعات به عنوان پاسخ.

اسکریپت جدید Python ما ، که هنوز هم همان خط متن را نمایش می دهد ، بسیار پیچیده تر است:

وارد کردن  webapp2

class MainPage(webapp2.RequestHandler): def get(self): self.response.headers["Content-Type"] = "text/plain" self.response.write("Congratulations, it"s a web app!") routes = [("/", MainPage)] my_app = webapp2.WSGIApplication(routes, debug=True)

ما webapp2برای استفاده از WSGI مجبور شدیم واردات کنیم. در آخرین خط از اسکریپت ما ، ما از چارچوب وب webapp2 برای ایجاد یک شی WSGIApplication به نام استفاده می my_appکنیم که به کد ما امکان ارتباط با سرور وب را می دهد.

این بار با استفاده از کلمه کلیدی "کلاس" کلاس جدیدی ایجاد می کنیم. این بدان معنی است که MainPageیک نوع جدید از شی (به طور خاص ، یک نوع از webapp2.RequestHandlerشیء) است که می تواند روش ها و ویژگی های خاص خود را مانند هر شی دیگر داشته باشد.

اگرچه به نظر می رسد که این get()روش استدلال "خود" را به وجود می آورد ، این کلمه کلیدی ویژه به طور خودکار توسط شیء جدید به عنوان روشی برای پیگیری خود ایجاد می شود و از آن استفاده می شود. ما باید از این کلمه کلیدی "خود" در یک شی جدید که تعریف کرده ایم استفاده کنیم ، زیرا شیء باید هنگام مراجعه به روش ها و ویژگی های خاص خود ، بداند. به عنوان مثال ، self.responseبرای دسترسی به پاسخ ذخیره شده در MainPageRequestHandlerجسم ما باید تماس بگیریم . برای یک نگاه عمیق تر در مورد نحوه ساخت و استفاده از کلاس پایتون ، "OOP Appendix" را در Real Python Course 1 بررسی کنید . یا ممکن است بخواهید به Codecademy"s Introduction to Class ها و پروژه تمرین همراه من نگاهی بیندازید .

به عنوان اولین استدلال WSGIA ما ، ما لیستی از برچسب ها را به نام گذشتیم routes. In this case, routes only contains one tuple, ("/", MainPage). This “route” tells our WSGI application that anyone accessing the main directory of our application should get directed to MainPage. We call MainPage a “request handler” because it is in charge of handling any user requests for that particular webpage.

سئوی سایت در تبریز

"/" به این صورت است که ما نماینده اصلی "root" برنامه ما (یعنی وب سایت ما) را ارائه می دهیم. اگر یک مورد دوم ( "/images/", ImagesPage)) را فراهم کرده بودیم ، پس هرکس که به فهرست "تصاویر" فرضی) وب سایت ما دسترسی پیدا می کند ، به ImagesPageمتن پایتون به کلاس هدایت می شد .

اگر در کد اشتباه کنیم ، debug=Trueاستدلال برنامه ما به ما امکان می دهد خطاهای گزارش شده توسط پایتون را در برنامه وب خود مشاهده کنیم. در غیر این صورت ، همه آنچه را خواهیم دید پیام 500 "خطای داخلی سرور" است.

به دلیل نحوه تعریف مسیرها ، وقتی وب سرور ما درخواست بارگیری صفحه "/" را دریافت می کند ، webapp2 یک MainPageشی جدید ایجاد می کند (به عنوان پاسخ دهنده درخواست به دلیل پاسخ به درخواست یک صفحه وب). get()روش MainPageبه صورت خودکار اجرا آن ایجاد می شود، که این است که چگونه ما WSGIApplicationدر پاسخ به وب سرور.