Как сделать свой html для UpdateView

Я делал собственные формы для CreateView и UpdateView со своим html файлом, потому что я не хочу отображать форму подобным образом {{form.as_p}}.

forms.py

from django import forms
from .models import Post

class PostCreationForm(forms.ModelForm):

    class Meta:
        model = Post
        fields = ('title', 'cover', 'text',)
        widgets = {
            'title': forms.TextInput(attrs={'class': 'title'}),
            'cover': forms.FileInput(attrs={'class': 'image'}),
            'text': forms.TextInput(attrs={'class': 'text'})
        }

class PostDeleteForm(forms.ModelForm):

    class Meta:
        model = Post
        fields = ('__all__')

views.py

from django.shortcuts import reverse
from django.http import HttpResponseRedirect
from django.views import generic
from .models import Post
from .forms import PostCreationForm, PostDeleteForm

class PostListView(generic.ListView):
    model = Post
    context_object_view = 'post_list'
    template_name = 'forum/post_list.html'


class PostDetailView(generic.DetailView):
    model = Post
    context_object_view = 'post'
    template_name = 'forum/post_detail.html'

class PostCreateView(generic.CreateView):
    model = Post
    form_class = PostCreationForm
    template_name = 'forum/post_create.html'

    def form_valid(self, form):
        if form.is_valid():
            response = form.save(commit = False)
            response.author = self.request.user
            response.save()
            return HttpResponseRedirect(reverse('post_detail', args=[str(response.id)]))


class PostUpdateView(generic.UpdateView):
    model = Post
    context_object_view = 'post'
    form_class = PostCreationForm
    template_name = 'forum/post_edit.html'

    def get_post(self, pk):
        return get_object_or_404(Post, pk=pk)

    def form_valid(self, form):
        if form.is_valid():
            response = form.save(commit = False)
            response.save()
            return HttpResponseRedirect(reverse('post_detail', args=[str(response.id)]))


class PostDeleteView(generic.DeleteView):
    model = Post
    context_object_view = 'post'
    form_class = PostDeleteForm
    template_name = 'forum/post_delete.html'
    success_url = '/'

    def get_post(self, pk):
        return get_object_or_404(Post, pk=pk)

post_create.html

{% extends '_base.html' %}

{% block css %}
    {% load static %}
    <link rel="stylesheet" href="{% static 'css/post_create.css' %}">
{% endblock css %}

{% block title %}Questions{% endblock title %}

{% block content %}

<h1 class="m-title">New Post</h1>

<div class="form">
    <form action="" method="post" enctype="multipart/form-data" id='postform'>
        {% csrf_token %}
        <p class="n-title"><label for="id_title">Title: </label></p>
        <input id="id_title" type="text" name="title" class="title" maxlength="40" required>

        <p class="n-image"><label for="id_cover">Image: </label></p>
        <input id="id_cover" type="file" name="cover" class="image" required>

        <p class="n-text"><label for="id_text">Text: </label></p>
        <textarea id="id_text" placeholder="Enter your text here" name="text" class="text" form='postform' required></textarea>
        <button class="btn btn-success" id="button" type="submit">Submit</button>
    </form>
</div>

{% endblock content %}

И я также хотел сделать для UpdateView, но не знаю как сделать чтобы в полях input отображалось нынешнее значение поста (title, cover, text). Html файл такой же как и для CreateView. Как мне сделать чтобы input отображали нынешнее значение поста, который изменяют?


Ответы (0 шт):