基于Django函数的视图返回表单对象而不是实际表单

时间:2019-02-06 04:33:27

标签: django python-3.x django-models django-forms django-views

我具有创建Post Model实例的这种观点。

def post_create(request):
    if request.method == 'GET':
        form = PostCreate()
        context = {
            'form': form
        }
        return render(request, 'posts/create.html', context)

    else:
        form = PostCreate(request.POST)
        if form.is_valid():
            title = form.cleaned_data.get('title')
            blog_type = form.cleaned_data.get('blog_type')
            text = form.cleaned_data.get('text')
            status = form.cleaned_data.get('status')

            Post.objects.create(
                title=title,
                blog_type=blog_type,
                text=text,
                status=status
            )
            return redirect('post-show')
        else:
            return render(request, 'posts/create.html', context)

我有一个表单类PostCreate,它是我的Post Model的ModelForm

class PostCreate(forms.ModelForm):
    class Meta:
        model = Post
        fields = [
            'title', 'blog_type', 'text', 'status'
        ]

并且create.html具有表单

<form action="" method='post'>
    {% csrf_token %}
    {{form.as_p}}
    <input type="submit">
</form>

有路径

path('posts/create', post_create, name='post-create'),

服务器运行良好。现在,当我转到此路径时,它不会显示表单。正如我在视图中使用print(form)或在模板中使用{{form}}所检查的那样,得到了<posts.views.PostCreate object at 0x10b1b8a90>。因此,{{form.as_p}}不返回任何内容。 昨天工作正常,但是今天,即使现在不工作,一切都很好。

0 个答案:

没有答案