1

假设我定义了以下模型:

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

并且有一个现有的 Location 实例id=1

我想针对此实例发布更新,但我不确定应该如何将 pk/id 发送到服务器。我有两个想法。

  1. 将其作为 url 的一部分包括在内(例如^update_location/(?P<pk>[0-9]+)/$')。
  2. 将其与用于更新其他属性的值一起包含在 POST 数据中。

我的问题是为什么我要选择一个而不是另一个?

我更倾向于选项 1,因为默认情况下,django.views.generic.edit.UpdateView我正在使用的通用视图支持它。但是后来我还是不知道怎么选。

4

2 回答 2

2

选项 1 使 python 更容易,因为 reverse() 将使 url 很好。

选项 2 使 javascript 更容易,因为它不必组成 url 和 POST 数据。

于 2012-11-02T15:03:34.417 回答
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

于 2012-11-02T15:09:33.977 回答