2012-11-02 63 views
1

說我已經定義了以下模型:Django的URL設計,發佈更新模型實例

class Location(models.Model): 
    name = models.CharField(max_length=20) 
    longitude = models.CharField(max_length=30) 
    latitude = models.CharField(max_length=30) 

而且還有與id=1

我要發佈針對該實例的更新現有的位置實例,但我不知道我應該如何將pk/id發送到服務器。我有兩個想法。

  1. 將其作爲網址的一部分(例如:^update_location/(?P<pk>[0-9]+)/$')。
  2. 將其包含在POST數據中以及用於更新其他屬性的值。

我的問題是爲什麼我會選擇一個在另一個?

我更傾向於選項1,因爲默認情況下,我使用的是通用視圖django.views.generic.edit.UpdateView。但是我仍然不知道如何選擇。

回答

2

我會說,你可以這樣做:

url(r'^update_location/(?P<location_id>\d+)/$', 'location.views.update'), 

,然後在您的視圖:

def detail(request, location_id): 
    // do whatever needed with location_id object 
    location = Location.objects.get(id=location_id) 
    return HttpResponse("You're updating location %s." % location_id) 

和有關表單處理,你可以看看: https://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs

+0

好。但爲什麼這一個比其他方法?任何其他方法的問題? – tamakisquare

+0

我會說這種方法(Django的風格)產生更清潔的網址...除此之外,我沒有看到任何錯誤。經典的POST方式一直工作多年:) – EagleOne

2

選項1使python變得更容易,因爲reverse()將使url很好。

選項2使javascript更容易,因爲它不必組成url和POST數據。