2015-12-11 6 views
1

Хорошо, как описано в названии, я пытаюсь создать веб-страницу (test.html), где после отправки формы она должна перенаправить меня на новую страницу (например, status.html). После загрузки этой страницы должно отображаться некоторые постоянные обновления для поставленной задачи. Я смог выполнить это на одной странице, когда я пытаюсь перенаправить это на новую страницу. Мне не повезло.Django отправить форму-> перенаправить на новую страницу-> автоматически обновить новую страницу

test.html

<form action="status/" method="POST" id="start-form"> 
..... 
<input type="submit" value="Start" class="tbutton"> 

views.py

def status_page(request): 
print("Inside redirect") 
return HttpResponseRedirect(request,'my_app/status.html') 

url.py

url(r'^test/status/$', 'status_page'), 

jav.js

$('#start-form').on('submit',function(event){ 
event.preventDefault();  
status(); 
}); 
function status() { 
$.ajax({ 
    url : "status_page/", // the endpoint 
    type : "POST", // http method 
    data:{' ': '',}, // data sent with the post req 
headers: {Accept: "application/json"}, 
    success : function(json) { 
//on success display the rendered page,so what coding is needed here? 
}, 
    error : function(xhr,errmsg,err) { 
//error handling code } 
    }); 
} 

При выполнении новая страница не загружается, но если я обойду javascript, то действие формы будет выполнено, и произойдет рендеринг новой страницы через представление. Но с JavaScript, на успех что происходит? как отчет о возврате из представления будет зафиксирован в успехе и как отображается страница? Мне нужно использовать javascript и AJAX, как только новая страница загружена. Мне нужно отображать непрерывные обновления на одной странице. Итак, в основном, как реализовать перенаправление на новую страницу с помощью вышеуказанного кода с помощью javascript и Django? Любая помощь будет по-настоящему оценена!

ответ

2

В ваших views.py, HttpResponseRedirect используется неправильно. Если вы хотите перенаправить на новую страницу, то вы должны использовать,

return HttpResponseRedirect('/url-where-you-want-to-redirect/') 

Как HttpResponseRedirect ожидает URL-адрес вместо параметра Я имя шаблона.

Смотрите здесь: https://docs.djangoproject.com/en/1.9/ref/request-response/#django.http.HttpResponseRedirect

Лучше подход будет возвращать ответ в формате JSON с вашего status_page зрения, а затем в success методом AJAX, вы можете перейти к следующему URL-адресу:

window.location.href = '/url-where-you-want-to-redirect/'; 

Я надеюсь, что это помогает.

+0

ok, для первого подхода, но где n как параметр url отображается на фактический шаблон, который загружается. это снова приведет вас к Url.py, а затем снова к представлению. для второго подхода, если я даю URL-адрес в javascript-успехе, он снова возвращается к url.py-файлу для поиска соответствующего представления для этого конкретного URL-адреса, это выглядит как цикл, в котором для загрузки URL-адреса вы просматриваете вернитесь к javascript, а затем снова вернитесь к просмотру. Извините m confused –

+0

Я предполагаю, что на странице test.html вы вызываете тест/статус/через AJAX, и когда приходит ответ, вы перенаправляете его на другой URL. Правильно ли я понимаю? – rayy

+0

Для первого подхода вам нужно иметь другое представление и нужно отобразить другой шаблон из этого представления. Это шаблон, который, как я упоминал, будет называть некоторые непрерывные обновления представленной задачи. – rayy

Смежные вопросы