-1

我一直在尝试获取请求网址,如下所示

import webapp2

class MainPage(webapp2.RequestHandler):
    def get(self):
        print self.request.get('url')

app = webapp2.WSGIApplication([('/.*', MainPage)], debug=True)

当请求是

http://localhost:8080/index.html

它给了我类似的东西

Status: 200 Content-Type: text/html; charset=utf-8 Cache-Control: no-cache Content-Length: 70

我需要得到的是

index.html

编辑:以便我可以检查字符串并相应地显示正确的 html/模板文件。

我已经检查了请求文档并尝试了许多替代方法,但我似乎找不到解决方案。我对网络开发很陌生。我错过了什么?

4

3 回答 3

6

你应该从这里开始:https ://developers.google.com/appengine/docs/python/gettingstartedpython27/helloworld

您没有使用模板或模板模块/引擎,因此它与您访问的路径无关,因为您正在映射所有内容/.*

self.response.write()不使用print
如果您在检查请求类之前从头开始阅读文档,这对您来说会更好。

编辑:

如果您想在 requesthandler 中获取 urlpath 并根据 urlpath 提供不同的模板,请执行以下操作:

def get(self):
    if self.request.path == '/foo':
        # here i write something out
        # but you would serve a template
        self.response.write('urlpath is /foo')
    elif self.request.path == '/bar':
        self.response.write('urlpath is /bar')
    else:
        self.response.write('urlpath is %s' %self.request.path)

更好的方法是拥有多个 ReqeustHandlers 并将它们映射到WSGIApplication

app = webapp2.WSGIApplication([('/', MainPage),
                               ('/foo', FooHandler),
                               ('/bar', BarHandler),
                               ('/.*', CatchEverythingElseHandler)], debug=True)
于 2012-07-21T16:32:32.263 回答
2

代替:

self.request.get('url')

利用:

self.request.url

您可能会发现有用的其他选项包括:

self.request.path
self.request.referer

尝试这些更改以获得您正在寻找的结果。

于 2012-07-22T10:49:15.457 回答
1

你也可以使用这个:

def get(self):
     self.request.GET['name']
     self.request.GET['sender']
于 2013-10-08T07:03:54.233 回答