要將數據發佈到對象的服務器,必須提供對象的ID以進行查找。在哪裏包括ID並將其發送到服務器是一直困擾着我的東西。有三種選擇我心目中:在發佈對象的表單數據時在何處包含對象ID
- 包括作爲URL的一部分
- 包括ID作爲POST數據的一部分ID
- 放入查詢字符串的ID(我不知道如果查詢字符串在執行POST時被允許)
我在我的服務器端使用python/django。
有人請評論我應該與哪一個以及爲什麼。謝謝。
要將數據發佈到對象的服務器,必須提供對象的ID以進行查找。在哪裏包括ID並將其發送到服務器是一直困擾着我的東西。有三種選擇我心目中:在發佈對象的表單數據時在何處包含對象ID
我在我的服務器端使用python/django。
有人請評論我應該與哪一個以及爲什麼。謝謝。
我會通過網址在大多數情況下,特別是如果你正在創建一個視圖來顯示一個對象。此外,我會使用slug(如果有的話)而不是ID,因爲它在Google SERP中看起來更好,它在語義上更有意義,並且對用戶更具可讀性。
請記住,您可以使用get_absolute_url()
,{% url ... %}
標記和reverse()
函數輕鬆地反轉對象的網址。如果使用查詢字符串或帖子來顯示對象,則無法使用這些對象。
關於查詢字符串/參數;我通常按照構建查詢集的規則來使用我的URL,但使用參數進行過濾。也就是說,如果我想查看標記了某些內容的所有帖子,我通過URL /posts/tagged/some_tag
獲取主要查詢集,然後在需要的時候使用參數向下鑽取它們; /posts/tagged/some_tag?rating=2
關於POST數據;這應該只適用於當您呈現表單來編輯對象時。我仍然會使用URL來查找並顯示錶單(即/posts/my-post-slug/edit/
),我將使用參數來控制任何選項或功能(即/posts/my-post/slug/edit/?highlight_required_fields=true
),但表單的所有字段都將通過POST提交
Timmy - Thanks for分享你的經驗。我認爲他們是優秀的方法。在這裏,我爲你解決了一個django特定的問題。假設我通過POST將一些表單數據發送到'/ posts/my-post/slug/edit /?highlight_required_fields = true',我仍然可以使用request.GET.get('highlight_required_fields')'來查看值爲'highlight_required_fields'? – tamakisquare 2012-08-07 22:49:42
是的。在你看來,你會有'highlight = request.GET.get(「highlight」,None)'或者'request.GET ['highlight']' – 2012-08-07 22:59:46