2013-08-01 207 views
0

我正在構建一個博客,並且正在努力將其內容導出到json和xml。爲了得到這個工作,我想到了從請求頭中獲取我想要導出內容的頁面的url。但我懷疑它是否會起作用,因爲使用Google搜索並沒有給我任何答案。如何從請求中獲取網址

我是這樣做的,當我添加.json到我的博客url的末尾時,json被顯示出來,所以我正在尋找從請求中獲取url的原因,我甚至使用os.environ,但是不工作。

編輯:所以按照@ Timbtron的回答我用

self.request.get['path_url'] 

但只造成了一個關鍵的錯誤。

對不起,我明白,錯了,它應該是

self.request.path_url 
+0

請注意,在我的答案中,我鏈接到一系列不屬於鍵的屬性。 – Tombatron

回答

1

如果我理解正確的話,你試圖讓用戶在處理用戶的請求所請求的URL。如果是的話,看看下面的文檔:

Request data - webapp2

要考慮的另一個策略是,你可以創建3個處理器,一個用於HTML,XML和JSON。您可以設置路由規則,根據用戶請求的「文件擴展名」命中適當的處理程序。

例如:

只是另一種思路來考慮。

+0

嗯,我正在製作一個單獨的XML處理程序將其導出到xml,並且非常感謝@Tombatron鏈接。所以如果我明白了,如果我使用'self.request.get('url_path')',那麼我會得到用戶想要解析的url? – Bhargav

+0

當我將request屬性添加到get函數self.request.get ['path_url']時,我得到一個關鍵錯誤。 – Bhargav

+0

'path_url'不是字典鍵,它是請求對象的屬性。 'self.request.path_url'應該做到這一點。 – Tombatron

0

而是在你的代碼解析url_path的,你可以讓URI Routing照顧它爲你(從Tombatron的例子借款):

class HtmlBlogHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.write('This is the HtmlBlogHandler.') 

class JsonBlogHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.write('This is the JsonBlogHandler.') 

class XmlBlogHandler(webapp2.RequestHandler): 
    def get(self): 
     self.response.write('This is the XmlBlogHandler.') 

app = webapp2.WSGIApplication([ 
    (r'/article.html', HtmlBlogHandler), 
    (r'/article.json', JsonBlogHandler), 
    (r'/article.xml', XmlBlogHandler), 
]) 

您可以自定義的路由處理各種物品的ID和類型。

+1

謝謝你的拼寫我的名字。 – Tombatron

+0

我正在爲特定的處理程序使用URI路由,當我嘗試訪問用戶請求解析爲JSON或XML的url時,問題即將到來。 – Bhargav

+1

爲什麼不讓路由爲您解析URL? '(r'/ article/json /(\ d +)',JsonBlogHandler)'將解析出一個數字。然後使用'def get(self,article_id)'來獲得這個數字。 –