2010-08-02 57 views
0

我正試圖獲得以下設置。正則表達式Url conf Django

  1. 的flatpages:凡我所有靜態網站都(如:約,聯繫人..)

  2. 動態網頁:

在這裏,我想從一個鏈接的flatpages到起始位點:

在這個startsite我試過的URL conf下的正則表達式是:

(r'^myapp/start/(\d+)/$', 'mysite.views.def_that_should_just_show_hello_world'), 

在我的觀點:

def def_that_should_just_show_hello_world(request): 
return HttpResponse("Hello experiment world") 

如果我去

/MyApp的/我得到404:沒有簡單頁面指定的查詢相匹配。 /myapp/start /我得到404:沒有FlatPage匹配給定的查詢。 /MYAPP /開始/ 1,我得到

異常類型:類型錯誤 def_that_should_just_show_hello_world恰恰1參數(2給出)

我想在此設置,我會得到「你好實驗世界」的每一頁上。

我哪裏錯了? 我不明白正則表達式中的多個網站的方法。 爲了在所有這些網站上打印hello world,我需要做些什麼? 然後,我需要做些什麼才能在所有這些網站上顯示1張圖片?

非常感謝您的幫助!

回答

1

您正則表達式中有一個匹配組 - (\d+)位。

這需要一個或多個數字字符出現在該視圖的url的末尾。如果您最後沒有包含該號碼,則此正則表達式不會與網址匹配。 (網址匹配工程像任何其他正則表達式匹配)。

當你包括數字,例如。 /myapp/start/1然後你有另一個問題。因爲有一個匹配組,所以括號中url的部分將作爲另一個參數傳遞給你的視圖。視圖始終通過請求作爲其第一個參數,但在這種情況下,由(\d+)匹配的'1'作爲第二個參數提供。這就是爲什麼你在這種情況下正在處理TypeError的原因。

Django的文檔有一個lot of information on how url dispatching work s,閱讀它,看看是否合理!

+0

謝謝!對不起,但我沒有明白。特別是你寫到: 「 因爲有一個匹配組,所以括號中的URL部分(你的意思是:(\ d +))將作爲另一個參數傳遞給你的視圖。 我能做些什麼,它會通過正確的參數(第一,第二)? – MacPython 2010-08-02 09:17:22

+0

如果你添加另一個參數給你的視圖函數(或者添加* args來捕獲任意數量的參數),那麼這個視圖會匹配url'/ myapp/start/1'。簽名爲def def_that_should_just_show_hello_world(request,number):'。 – adamnfish 2010-08-02 09:20:17