我有一个名字,年龄,电子邮件领域的学生模型。我为此创建了一个表单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做了新的回复
答案 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教程中的”索引“页面,没有表单的模型列表)
如果成功创建帐户,很多网站都会将新创建的用户放在他们的个人资料页面上。这样他们就可以确认他们已经成功登录,并且他们已经准备好做一些有用的事情,而不是查看“成功”页面。
或者,他们将此人放在网站的主页上,但此人的登录名在导航栏中。这假设他们已经登录并注册。