用于将更新发布到模型实例的Django URL设计

时间:2012-11-02 15:01:06

标签: django django-views django-urls

说我定义了以下模型:

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数据中。
  3. 我的问题是为什么我要选择其中一个呢?

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

2 个答案:

答案 0 :(得分:2)

选项1使python更容易,因为reverse()会使url正常。

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

答案 1 :(得分: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