Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django创建更新发布函数_Django_Django Models - Fatal编程技术网

Django创建更新发布函数

Django创建更新发布函数,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) .

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

型号.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',)
视图.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