Я новичок в Django и пытаюсь получить переменную, отправленную из ajax, которая будет использоваться в представлении Django. Мое мнение:Использование Ajax-вызова для обновления представления Django
def index(request):
if (request.is_ajax()):
username = request.GET['user']
else:
username = ''
context = {'user':username}
return render(request, 'index.html', context)
и Аякса:
$.ajax({
url: '/index/',
type: 'GET',
data: {user: response.name, page: page}
});
Моя проблема заключается в том, что username
не обновляет в представлении, на основе вызова Ajax. Я знаю, что вызов ajax работает правильно, потому что, глядя на сетевой ответ, он передает правильное обновленное имя пользователя.
Я уверен, что происходит то, что представление загружено, затем происходит вызов ajax и обновляет имя пользователя, но представление не перерисовывается и, следовательно, не изменяется. Я попытался поместить другой рендер после получения имени пользователя, но это ничего не изменило, и я также сделал отдельное представление для обработки вызова ajax, но это тоже не работает, поскольку представление всегда загружается без запроса ajax правда.
Каков способ заставить это работать? Спасибо за любую помощь.
Что вы получаете от ответа ajax? Что вы с ним делаете? Если вы добавите 'complete: function (resp) {...}' к вашему запросу ajax, что такое 'resp.responseText' внутри этой функции? – jproffitt
Извините, также немного новичок с ajax. Если I console.log текст ответа, он регистрирует обновленную страницу индекса с новым именем пользователя. Так что я должен просто перезагрузить страницу с успехом? – mcw
Возможно, вы замените DOM новым DOM. Но это крайне неэффективно. Вам действительно нужно вернуть только имя пользователя и обновить его. Посмотрите на ответ Брэндона за помощью. где он имеет 'console.log (json.user);' Сделайте что-то вроде '$ ('# username'). html (json.user)' – jproffitt