Django: есть ли общий обработчик для вставки объекта POST непосредственно в базу данных? - PullRequest
0 голосов
/ 31 декабря 2011

Django: есть ли общий обработчик для вставки объекта POST непосредственно в базу данных?Я пишу много обработчиков, которые выглядят так:

def ajax_storeObject(request):
    if request.method == 'POST':
         Object(
                field1 = request.POST["field1"],
                field2 = request.POST["field2"],
                field3 = request.POST["field3"],
                field4 = request.POST["field4"],
          ).save()
          return HttpResponse(json.dumps({"status":"Success"}), mimetype="application/json")
    return HttpResponse(json.dumps({"status":"Failed"}), mimetype="application/json")

Кажется, что может быть универсальное представление в одну строку, чтобы позаботиться о подобных вещах.Существует ли такое представление?

Редактировать: Кстати, мне комфортно с модельными формами, но пример использования, который я здесь рассматриваю, более узкий: вызовы RESTful AJAX, которые не основаны на стандартных формах (например, пользователь манипулирует объектом на странице, и отправляется вызов REST для уведомления сервера.).

Ответы [ 3 ]

1 голос
/ 01 января 2012

В формах нет ничего, что требовало бы от вас рисовать форму. ModelForms - это то, что нужно, если вы не собираетесь использовать поршень, вкусный пирог или что-то в этом роде.

Поместите это на свою страницу: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

class ObjectAjaxForm(forms.ModelForm):
  class Meta:
     model = Object
     fields = ("field1", "field2", "field3", "field4")


#or, if you don't want the "free" csrf protection
#@csrf_exempt
def ajax_store_object(request):
    #request.POST can be substituted with any dictionary/dictionary like object
    form = ObjectAjaxForm(request.POST)
    if form.is_valid():
      form.save()
      return HttpResponse(json.dumps({"status":"Success"}), mimetype="application/json")
    else:
      return HttpResponse(json.dumps({"status":"Failed"}), mimetype="application/json")
1 голос
/ 31 декабря 2011

Вы смотрели на модельные формы ?

0 голосов
/ 31 декабря 2011

Насколько я знаю, нет общего представления Ajax, но, возможно, вы ищете это?

Object(**request.POST).create()

Конечно, вам нужно убедиться, что request.POST не содержит ничего, что вы не хотите помещать в модель (например, поле "отправить").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...