Django创建更新发布函数
我想创建一个更新/编辑后功能,但我有一个问题。当我点击“更新”按钮时,没有错误,但没有更改。我认为这是我在models.py中犯的一个错误,但我无法找出原因。这是我的密码 型号.pyDjango创建更新发布函数,django,django-models,Django,Django Models,我想创建一个更新/编辑后功能,但我有一个问题。当我点击“更新”按钮时,没有错误,但没有更改。我认为这是我在models.py中犯的一个错误,但我无法找出原因。这是我的密码 型号.py class Post(models.Model): author = models.ForeignKey('auth.User', on_delete=models.CASCADE) title = models.CharField(max_length=200) .
class Post(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField(max_length=200)
.
.
.
def get_update_url(self):
return reverse('post:post_update', kwargs={'slug': self.slug})
def post_update(request, slug):
if not request.user.is_authenticated():
return Http404()
post = get_object_or_404(Post, slug=slug)
form = PostForm(request.POST or None, request.FILES or None, instance=post)
if form.is_valid():
form.save()
messages.success(request, "Updated")
return HttpResponseRedirect(get_absolute_url())
context = {
'form': form
}
return render(request, "blog/post_update.html", context)
url(r'^(?P<slug>[\w-]+)/update/$', post_update, name="update"),
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('title', 'text',)
视图.py
class Post(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField(max_length=200)
.
.
.
def get_update_url(self):
return reverse('post:post_update', kwargs={'slug': self.slug})
def post_update(request, slug):
if not request.user.is_authenticated():
return Http404()
post = get_object_or_404(Post, slug=slug)
form = PostForm(request.POST or None, request.FILES or None, instance=post)
if form.is_valid():
form.save()
messages.success(request, "Updated")
return HttpResponseRedirect(get_absolute_url())
context = {
'form': form
}
return render(request, "blog/post_update.html", context)
url(r'^(?P<slug>[\w-]+)/update/$', post_update, name="update"),
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('title', 'text',)
post_update.html
{% extends 'blog/base.html' %}
{% load crispy_forms_tags %}
{% block body %}
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h1>Form</h1>
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form|crispy }}
{{ form.media }}
<input class="btn btn-primary" type="submit" value="Create post">
</form>
</div>
</div>
</div>
{% endblock %}
我的错在哪里?我能做什么?请添加相关url以及您的PostForm定义好的,我现在就做了。我想您是想在models.py中使用get\u absolute\u url而不是get\u update\u url