无法在我的模板中获取帖子对象模型

时间:2013-06-14 06:52:32

标签: javascript django json response alert

我有一个名字,年龄,电子邮件领域的学生模型。我为此创建了一个表单StudentForm,创建了一个这样的视图

def student(request):
form=Studentform(request.POST)
if request.method=='POST':

    if form.is_valid():
        stu=Student()
        stu.name=form.cleaned_data['name']
        stu.email=form.cleaned_data['email']
        stu.age=form.cleaned_data['age']
        stu.save()

        return HttpResponseRedirect('/index/')

else:
    form=Studentform()
return render_to_response('index.html',{'form':form},context_instance=RequestContext(request) )

这里是我的index.html

<html>
   <head>
   <title></title>
    <script type="text/javascript">
    var student={{ stu_var }}
    alert("erer")
     </script>
  </head>
  <body>

   <form action="/index/" method="post">{% csrf_token %}
       {{form.as_p}}
        <input type="submit" id="submit" name="submit" onclick="alert(student)">
      </form>
     </body>
</html>

现在我希望我在学生视图中创建一个json响应,它包含学生对象的所有值,并在发布时将其呈现给我的index.html,这样我就可以生成一个类似于---&gt;的警报。 “Aditya SIngh,您已成功提交数据”。 Aditya SIngh将成为学生的名字 我提前为django.thanx做了新的回复

1 个答案:

答案 0 :(得分:1)

因此,您希望在成功保存之后看到已保存的学生数据...您不需要javascript / json。

在您的代码中,保存信息后,您将用户重定向到“索引”视图。相反,您可能希望重定向到“成功!”页面,您显示信息:

HttpResponseRedirect('/success/%d/' % stu.id)

因此现有视图可能如下所示:

def student(request):

    form=Studentform(request.POST)

    if request.method=='POST':

        if form.is_valid():

            stu=Student()
            stu.name=form.cleaned_data['name']
            stu.email=form.cleaned_data['email']
            stu.age=form.cleaned_data['age']
            stu.save()

            return HttpResponseRedirect('/success/%d/' % stu.id)
        else:
            pass
            # return the half-completed form with the old data so the
            # user can make corrections
            # this "else" is not required, I just put it in here
            # to have a place to put this comment
            # and to show that this is another path that might be taken
            # through the code.

    else:
        # empty form for the user to fill out
        form=Studentform()

    return render_to_response('index.html',
        {'form':form},
        context_instance = RequestContext(request) )

您将为成功页面添加一个视图(也是相应的模板和url条目):

def success (request, id=None):

    stu = Student.objects.get (id = id)

    return render_to_response ('success.html',
        {'stu', stu},
        context_instance = RequestContext(request) )

如果你真的想要一个“警告”对话框,你可以为此制作一个onLoad事件。

如果您想要警告对话框索引页面,则会出现问题。视图只能返回一个内容,并且您已经返回索引页面。您将不得不以某种方式告诉索引页面哪个学生获取信息,但索引页面并非真正为此设计(假设您使用的是“Django教程中的”索引“页面,没有表单的模型列表)

如果成功创建帐户,很多网站都会将新创建的用户放在他们的个人资料页面上。这样他们就可以确认他们已经成功登录,并且他们已经准备好做一些有用的事情,而不是查看“成功”页面。

或者,他们将此人放在网站的主页上,但此人的登录名在导航栏中。这假设他们已经登录并注册。