首先,在Django模型中定义一个名为'Post”的模型,它将存储帖子的内容。
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
接下来,创建一个用于更新帖子的视图函数。这个函数必须使用Django Forms和一个表单类来更新模型。
@login_required
def update_post(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == 'POST':
form = PostForm(request.POST, instance=post)
if form.is_valid():
form.save()
messages.success(request, f'Your post has been updated!')
return redirect('post-detail', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'blog/post_form.html', {'form': form})
在使用PostForm
编写完视图之后,可以使用JavaScript编写带有AJAX的模态框,以便在用户更新帖子时更新帖子的内容。要在模态框中显示表单,需要编写一些JavaScript:
$(document).ready(function () {
// when edit post button is clicked
$('.edit-post').click(function () {
var post_id = $(this).attr('data-post-id');
var post_title = $(this).closest('div').find('.post-title').text().trim();
var post_content = $(this).closest('div').find('.post-content').text().trim();
$('#id').val(post_id);
$('#id_title').val(post_title);
$('#id_content').val(post_content);
$('#edit-post-modal').modal('show');
});
});
$(document).on('submit', '#edit-post-form', function (e) {
e.preventDefault(); // prevent default form submission
var form_data = $(this).serialize();
var post_id = $('#id').val(); // get post id from form field
$.ajax({
type: "POST",
url: `/blog/update/${post_id}/`, // Django URL for update_post view
data: form_data,
success: function (response) {
$('#edit-post-modal').modal('hide');
window.location.replace(`/blog/post/${post_id}/`);
}
});
});
最后,在模板中添加一个带有edit-post
类的按钮,它将触发
上一篇:编辑条件格式公式