好的标题描述,我试图创建一个网页(test.html),在提交表单后,它应该将我重定向到一个新页面(比如status.html)。在此页面加载后它应该显示对提交的任务进行一些持续更新。我能够在一个页面上完成此操作,当我试图将其重定向到新页面时我运气不好。
的test.html
var jsonString1 = @"{""data"": [""zero"", 1, ""two""]}";
var jsonString2 = @"{""data"": {""0"": ""zero"", ""1"":1, ""2"":""two""}}";
var deserializer = new JavaScriptSerializer();
deserializer.RegisterConverters(new JavaScriptConverter[] { new myClassConverter() });
var newJson1 = new JavaScriptSerializer().Serialize(deserializer.Deserialize<myClass>(jsonString1));
var newJson2 = new JavaScriptSerializer().Serialize(deserializer.Deserialize<myClass>(jsonString2));
Console.WriteLine(newJson1); // Prints {"data":{"0":"zero","1":"1","2":"two"}}
Console.WriteLine(newJson2); // Prints {"data":{"0":"zero","1":"1","2":"two"}}
Debug.Assert(newJson1 == newJson2); // No assert
views.py
<form action="status/" method="POST" id="start-form">
.....
<input type="submit" value="Start" class="tbutton">
url.py
def status_page(request):
print("Inside redirect")
return HttpResponseRedirect(request,'my_app/status.html')
jav.js
url(r'^test/status/$', 'status_page'),
在执行时,不会加载新页面,但如果我绕过javascript,则执行表单操作并通过视图进行新页面呈现。但是使用JavaScript,成功会发生什么?如何在成功中捕获视图中的return语句以及页面是如何显示的? 我需要使用javascript和AJAX,因为一旦加载了新页面,我需要在同一页面上显示连续更新。那么基本上如何使用javascript和Django使用上面的代码实现重定向到新页面?任何帮助将真正感谢!
答案 0 :(得分:2)
在views.py中,HttpResponseRedirect使用不正确。如果要重定向到新页面,则应使用
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use File::Copy;
print "Content-type: application/json\n\n";
my $query = new CGI;
my $name = $query->param('name');
#$name = "WVID21WAAA110200";
my $sdir = "/disk1/advisories/input/unread";
my $tdir = "/disk1/advisories/input/read";
my $file = $sdir."/".$name;
my $tfile = $tdir."/".$name;
my $f = 0;
print "[";
if (-e $file && -f $file)
{
move($file,$tfile) or $f=1;
if(($f==1)){
print "{\"status\":\"failed\",\"message\":\"Access Denied\"}";
}else{
print "{\"status\":\"success\",\"message\":\"File moved\"}";
}
}else{
print "{\"status\":\"failed\",\"message\":\"Invalid file\"}";
}
print"]";
exit 0;
由于return HttpResponseRedirect('/url-where-you-want-to-redirect/')
需要url参数而不是模板名称。
见这里:https://docs.djangoproject.com/en/1.9/ref/request-response/#django.http.HttpResponseRedirect
更好的方法是从HttpResponseRedirect
视图返回JSON响应,然后在ajax的status_page
方法中返回,您可以转到下一个网址:
success
我希望这会有所帮助。