Django将表单>重定向提交到新页面 - >自动更新新页面

时间:2015-12-11 07:22:26

标签: javascript html django

好的标题描述,我试图创建一个网页(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使用上面的代码实现重定向到新页面?任何帮助将真正感谢!

1 个答案:

答案 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

我希望这会有所帮助。