Динамические пути в веб-приложении Python - PullRequest
4 голосов
/ 23 февраля 2012

В настоящее время я экспериментирую с некоторыми API, и мне хотелось бы узнать, как использовать URL-адреса в качестве параметра для приложения.Например:

http://www.myapp.com/myapp/jack распечатывает "привет-джек"

или

http://www.myapp.com/myapp/john распечатывает "привет-джон"

или http://www.myapp.com/myapp/john%20jack выводит «привет джон джек»

Мне бы хотелось несколько указателей, где я могу найти эту функцию.У меня такое ощущение, что это легко, но я просто не могу этого понять.Это зависит от фреймворка, который я использую?Я очень новичок в Python, поэтому я все еще прихожу к соглашению с Django и подобными.Я использую Python в Google App Engine с помощью встроенного веб-приложения GAE.

В настоящее время используется код, с которым я сейчас работаю:

import cgi

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
  def get(self,url=None):
    self.response.out.write("hello " + str(url))

application = webapp.WSGIApplication([
                                    (r'/(\w+)', MainPage)
                                    ],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

Ответы [ 2 ]

3 голосов
/ 23 февраля 2012

Wei,

Вы должны создать шаблон URL, например, когда вы получите запрос на myapp, вы проанализируете оставшийся URL и отобразите сообщение.

например

Файл helloworld/app.yaml

application: helloworld
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: helloworld.py

Файл helloworld/helloworld.py

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
    def get(self, url=None):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Happy New Year '+str(url))

#application = webapp.WSGIApplication(
#                                     [('/', MainPage)],
#                                     debug=True)

application = webapp.WSGIApplication([
                                    (r'/myapp/(?P<url>\d{4})/$', MainPage)
                                    ],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

Так что это обработает все ваши запросы на /myapp/year/, поэтому из этого вы должны получить значение после/myapp/ и отобразите год.

Примечание: сделайте долго себя, чтобы понять, как это будет работать:).

0 голосов
/ 28 февраля 2012

Мне просто любопытно, действительно ли нужен тег ?P<url>?

Мне удалось решить проблему, используя

application = webapp.WSGIApplication([
                                    (r'/myapp(/.*)*?', MainPage)
                                    ],
                                     debug=True)

Спасибо Lafada & Wei Hao за то, что поделились с намиЯ тоже застрял в этой проблеме и нашел это обсуждение действительно полезным:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...