Отправка формы без обновления страницы с использованием Django, Ajax, jQuery? - PullRequest
1 голос
/ 02 марта 2020

Я новичок ie, работаю с Django. Мне нужен простой пример. Как отправить форму (сообщение) без обновления страницы, используя Django, Ajax, jQuery?

Это моя форма, представления и шаблон:

views.py

import json
from django.shortcuts import *
from django.template import RequestContext
from linnea.web_interface import run_linnea 
from linnea_demo_app.forms import *

def linnea_demo(request):
    if request.method == "POST":
        form = AdvertForm(request.POST)

        message = 'something wrong!'
        if(form.is_valid()):
            print(request.POST['title'])
            message = request.POST['title']

        return HttpResponse(json.dumps({'message': message}))

    return render_to_response('linnea_demo.html',
            {'form':AdvertForm()}, RequestContext(request))

forms.py

from django import forms
from django.forms import ModelForm
from linnea_demo_app.models import Advert

class AdvertForm(ModelForm):
    class Meta:
        model = Advert

models.py

from django.db import models


class Advert(models.Model):
    text = models.TextField()

index. html

<form action="" method="POST" id="post-form">
                  {% csrf_token %}
                  {{form.as_p}}
                  <input type="submit" id="btnGetKernel" class="" value="Generate Kernel"/>
              </form>

. js

$('#form').submit(function(e){
    $.post('/url/', $(this).serialize(), function(data){ 
       $('.message').html(data.message);
    });
    e.preventDefault();
});

Однако я получил эту ошибку:

django .core.exceptions.ImproperlyConfigured: Создание ModelForm без атрибута 'fields' или 'exclude' атрибут запрещен; Форма AdvertForm нуждается в обновлении.

Я правильно делаю?

1 Ответ

0 голосов
/ 02 марта 2020

Сообщение об ошибке предельно ясно.

Создание ModelForm без атрибута 'fields' или атрибута 'exclude' запрещено; Форма AdvertForm нуждается в обновлении.

Вам необходимо обновить AdvertForm, чтобы включить атрибут fields или exclude.

from django import forms
from django.forms import ModelForm
from linnea_demo_app.models import Advert

class AdvertForm(ModelForm):
    class Meta:
        model = Advert
        fields = ['text']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...