В моем проекте есть модель Post. На моей домашней странице есть список всех сообщений и форма post_create. Я создаю сообщение, используя представление ajax. Намерение состояло в том, чтобы создать новый пост и обновить домашнюю страницу без обновления страницы. Вот код, просмотры.py,
def post_create_ajax(request):
if request.is_ajax():
if request.method == 'POST':
title = request.POST.get('the_post')
author = request.user
post = Post(title=title, author=author)
print(title)
post.save()
return JsonResponse({'title': title})
Сценарий,
$('#postform').submit(function(event){
event.preventDefault();
console.info('Working');
create_post();
});
function create_post(){
console.info('Create Post is working');
var posttitle = $('#id_title').val();
$.ajax({
url: '/ajaxcreate/',
type: "POST",
data: {
the_post: posttitle,
csrfmiddlewaretoken: '{{ csrf_token }}',
},
dataType: 'json',
success: function(data){
$('#id_title').val('');
console.info(data.title);
$('#post_title_content').html(data.title);
},
error:function(){
console.info('Error Occoured');
alert('Error');
},
})
}
Эта часть работает нормально. Новый пост на странице добавляется без обновления.
Вот проблема. После того, как я отправлю сообщение, новый заголовок, который будет добавлен, небезопасен.
например если я добавлю <b> This is a title </b>, новый div будет добавлен с это название и вернется к простому тексту <b> This is a title </b> только после того, как я обновлю страницу.
Итак, мой вопрос: как изменить мой скрипт, чтобы он обновлял div как обычный текст?
Картинки:
Новый пост добавляется, но не в виде обычного текста,
После обновления он отображается как обычный текст,





Вы должны использовать .text(data.title) вместо .html(data.title). Есть дополнительная информация об этом другом вопрос.
Вы должны использовать .text вместо .html в этой строке
$('#post_title_content').html(data.title);
jQuery.html() обрабатывает строку как HTML, а jQuery.text() обрабатывает содержимое как текст.