http://learnpythonthehardway.org/book/ বইটা প্যাকটিস করতে এসে লেসন ৫০ এ কিছু সমস্যায় পড়েছি। নিচে কোর্ডটি শেয়ার করলাম।

১) এখানে urls টাপল কিভাবে কাজ করছে? ২) ক্লাসের নাম index এবং ফাংশনের নাম GET ছাড়া অন্য নাম দিলে কাজ করছে না কেন? ৩) সর্বশেষ if কন্ডিশন এখানে কিভাবে কাজ করছে?

import web

urls = ('/', 'index')

app = web.application(urls, globals())

class index:
    def GET(self):
        greeting = "Hello world"
        return greeting

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

সর্বোপরি সম্পূর্ন কোর্ডটি বুঝিয়ে দিলে উপকার হত।

asked 06 Jan '15, 08:26

mahbub's gravatar image

mahbub
9129


urls = ('/', 'index') টাপল দ্বারা বোঝাচ্ছে যে হোম পেজে রিকোয়েস্ট আসলে সেটা index ক্লাস থেকে সার্ভ করা হবে। মানে ধরা যাক, কেউ ব্রাউজারের এড্রেস বারে লিখল http://dimikcomputing.com। তখন যেই পেজটা ওয়েব ব্রাউজারে দেখাবে সেটাই হচ্ছে ইনডেক্স পেজ, যেটা সার্ভ করবে index নামের ক্লাস। এখন ক্লাসের নাম index দিতে হচ্ছে কারণ urls টাপলে এটার কথা বলে দেওয়া আছে, তাই অন্য নাম দেওয়া যাচ্ছে না। আবার মেথডের নাম GET কারণ ইনডেক্স পেজ রিকোয়েস্ট করার সময় GET রিকোয়েস্ট করা হয়, এটি HTTP প্রটোকলের একটা বিষয়। urls = ('/', 'kutub') লিখলে ক্লাসের নাম kutub দিতে হবে (এটা একটু পরীক্ষা করে দেখে নাও)।

অনেকেই ওয়েব প্রোগ্রামিং শিখতে চায় কিন্তু ওয়েব কিভাবে কাজ করে সেটি বুঝে না। তাদের জন্য আমার স্ট্রং রিকমেন্ডেশন হচ্ছে তাহমিদ রাফির ওয়েব কনসেপ্টস্ কোর্সটি অনলাইনে করে ফেলা। লিঙ্ক : https://dimikcs.appspot.com/WEB100/

permanent link

answered 06 Jan '15, 15:45

Tamim%20Shahriar%20Subeen's gravatar image

Tamim Shahriar Subeen ♦♦
5.8k1026

edited 13 Jan '15, 10:55

tahmidrafi's gravatar image

tahmidrafi ♦♦
975214

The most important part of any website is its URL structure. Your URLs aren't just the thing that your visitors see and email to their friends, they also provide a mental model of how your website works. On popular sites like del.icio.us, the URLs are even part of the user interface. web.py makes it easy to make great URLs.

To get started with your web.py application, open up a new text file (let's call it code.py) and type:

import web This imports the web.py module.

Now we need to tell web.py our URL structure. Let's start out with something simple:

urls = ( '/', 'index' ) The first part is a regular expressions that matches a URL, like /, /help/faq, /item/(\d+), etc. (i.e. \d+ would match a sequence of digits). The parentheses say to capture that piece of the matched data for use later on. The second part is the name of a class to send the request to, like index, view, welcomes.hello (which gets the hello class of the welcomes module), or get_\1. \1 is replaced by the first capture of your regular expression; any remaining captures get passed to your function.

This line says we want the URL / (i.e. the front page) to be handled by the class named index.

GET and POST: the difference Now we need to write the index class. While most people don't notice it just browsing around, your browser uses a language known as HTTP for communicating with the World Wide Web. The details aren't important, but the basic idea is that Web visitors ask web servers to perform certain functions (like GET or POST) on URLs (like / or /foo?f=1).

GET is the one we're all familiar with, the one used to request the text of a web page. When you type harvard.edu into your web browser, it literally asks the Harvard web server to GET /. The second-most famous, POST, is often used when submitting certain kinds of forms, like a request to purchase something. You use POST whenever the act of submitting a request does something (like charge your credit card and process an order). This is key, because GET URLs can be passed around and indexed by search engines, which you definitely want for most of your pages but definitely don't want for things like processing orders (imagine if Google tried to buy everything on your site!).

In our web.py code, we make the distinction between the two clear:

class index: def GET(self): return "Hello, world!" This GET function will now get called by web.py anytime someone makes a GET request for /.

Now we need to create an application specifying the urls and a way to tell web.py to start serving web pages:

if name == "main":

app = web.application(urls, globals())

app.run()

First we tell web.py to create an application with the URLs we listed above, looking up the classes in the global namespace of this file. And finally we make sure that web.py serves the application we created above.

Now notice that although I've been talking a lot here, we only really have five or so lines of code. That's all you need to make a complete web.py application.

For easier access, here's how your code should look like:

import web

urls = ( '/', 'index' )

class index: def GET(self): return "Hello, world!"

if name == "main":

app = web.application(urls, globals())

app.run()

More

permanent link

answered 06 Jan '15, 09:53

ishahriyar's gravatar image

ishahriyar
9518

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×66
×30
×2

question asked: 06 Jan '15, 08:26

question was seen: 1,309 times

last updated: 13 Jan '15, 10:55