Django创建更新发布功能

时间:2018-08-17 09:14:33

标签: django django-models

我想创建一个后更新/编辑功能,但是有一个问题。当我单击“更新”按钮时,没有错误,但没有更改。我认为是我在models.py中犯了一个错误的原因,但我无法弄清楚。这是我的代码

models.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})

views.py

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)

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 %}

post_detail.html

//更新链接

  <p ><a href="?P<slug>[\w-]+)/update/">update</a></p>

urls.py

url(r'^(?P<slug>[\w-]+)/update/$', post_update, name="update"),

forms.py

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ('title', 'text',)

我的错误在哪里?我该怎么办?

0 个答案:

没有答案