繁体   English   中英

使用 Django、Ajax、jQuery 提交表单而不刷新页面?

[英]Submitting form without refreshing page using Django, Ajax, jQuery?

我是 Django 的新手。 我需要一个简单的例子。 如何使用 Django、Ajax、jQuery 在不刷新页面的情况下提交表单(发布)?

这是我的表单、视图和模板:

视图.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))

表格.py

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

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

模型.py

from django.db import models


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

索引.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:禁止创建没有 'fields' 属性或 'exclude' 属性的 ModelForm; 表单 AdvertForm 需要更新。

我做得对吗?

错误信息非常清楚。

禁止创建没有 'fields' 属性或 'exclude' 属性的 ModelForm; 表单 AdvertForm 需要更新。

您需要更新AdvertForm以包含fieldsexclude属性。

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']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM