Django不允许我用这个视图函数创建一个新的模型对象。怎么了?

Django不允许我用这个视图函数创建一个新的模型对象。怎么了?,django,forms,views,geodjango,Django,Forms,Views,Geodjango,我通过POST提交了一个表单,我试图用Django中的这个视图在我的数据库中创建一个新的模型对象。它不起作用了。有人能告诉我这个函数看起来是否正常吗 多谢各位 @csrf_exempt def UploadTest(request): if request.method == 'POST': form = TestForm(request.POST) response = {} if form.is_valid():

我通过POST提交了一个表单,我试图用Django中的这个视图在我的数据库中创建一个新的模型对象。它不起作用了。有人能告诉我这个函数看起来是否正常吗

多谢各位

@csrf_exempt
def UploadTest(request):

    if request.method == 'POST':

        form = TestForm(request.POST)
        response = {}

        if form.is_valid():
            response["status"] = "OK"
            new_point = MyModel()
            cd = form.cleaned_data
            coordinates = cd['coordinates'].split(',')
            new_point.pt = Point(float(coordinates[0]), float(coordinates[1]))
            new_point.name = cd['name']
            new_point.point_type = cd['point_type']
            new_point.description = cd['description']
            new_point.save()
        else:
            response["status"] = "bad"
            response.update(form.errors)    

            s = StringIO()
            json.dump(response, s)
            s.seek(0)
            return HttpResponse(s.read())
    else:
        form = TestForm()
    return render_to_response('upload.html', {'form': form })

更新:我没有发现问题,但我重新创建了我的数据库,它工作了!谢谢大家,很抱歉占用了你们的时间!任何管理员都可以随意删除此帖子。

您正在
if request.method==“POST”
if语句中定义
表单,这意味着如果请求方法不是POST,表单将被取消定义,这将阻止您的查看功能工作


编辑:忽略我,由于格式问题,我错过了
else
语句。

更新:

实际上,我认为您需要在视图上使用sure_csrf_cookie()而不是csrf_emption(),因为它看起来像是在做一篇ajax文章


旧答案:

点没有被保存。你应该创建它。保存它。然后设置新的_point.pt

if form.is_valid():
    response["status"] = "OK"
    new_point = MyModel()
    cd = form.cleaned_data
    coordinates = cd['coordinates'].split(',')
    new_point_object = Point(float(coordinates[0]), float(coordinates[1]))
    new_point_object.save()
    new_point.pt = new_point_object
    new_point.name = cd['name']
    new_point.point_type = cd['point_type']
    new_point.description = cd['description']
    new_point.save()

嗯。所以除了许多人提出的点save(我不认为这是根本问题)之外,这个函数中不应该有任何格式或语法错误,对吗?从理论上讲,它应该有效吗

这样我就可以集中精力调试其余的

这与我试图实现的观点相同,但有一些修改:


谢谢

你有错误吗?没有。没有错误。更像是什么都没发生。没有响应,也不会创建新对象。如果我清除了“If form is valid”(如果表单有效)下除响应之外的所有内容,那么我将返回一个响应。因此,我的模板中的javascript POST函数似乎起作用了。您忘记保存
点()
-在将其分配到
新点之前尝试保存
pt
,表单是否真的有效?你能确认你的文章(我编辑的)中的缩进吗?谢谢你的回答。是的,我认为表单是有效的,因为我没有得到验证错误,如果我将字段留空,我会得到这些错误。不知道你是什么意思?是的,压痕看起来不错。谢谢你的编辑,我在stackoverflows系统上遇到了一些问题。谢谢你的回答!我试过你的第一个答案,但它不起作用:/我会检查CSRF的东西,因为我认为我试过了,没有点和尼瑟的作用。不,确保没有太大的区别。谢谢你。我想你可能需要在你的表格上提供更多的信息!我添加了一个表单和模型。请看一看,看有没有什么奇怪的东西。