Измените, как выглядит UpdateView

#python #django #forms #view

Вопрос:

Для класса обновления:

 class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
    model = Post
    fields = ['title', 'content_don']


    def form_valid(self, form):  
        form.instance.author = self.request.user
        return super().form_valid(form)

    def test_func(self):
        post = self.get_object()
        if self.request.user == post.author:
            return True
        return False
 

Я хотел бы иметь разные «шаблоны».
Мой класс «CreateView» использует этот html-шаблон:

 {% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <div class="content-section">

        <form method="POST" enctype="multipart/form-data">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Define task</legend>
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Submit</button>
            </div>
        </form>
    </div>
{% endblock content %}
 

Я хотел бы использовать другой для просмотра обновлений, и я бы создал множество различных шаблонов, в зависимости от пользователя (названия кнопок, название изменения, разные поля, разные варианты и т. Д.).
Как я могу определить другой «внешний вид» для одного и того же или другого класса UpdateView, но все они должны изменить одну и ту же запись в соответствии с определенным PK.

Url.py

 path('post/new/', PostCreateView.as_view(), name='post-create'),
path('post/<int:pk>/update/', PostUpdateView.as_view(), name='post-update'),
path('post/<int:pk>/delete/', PostDeleteView.as_view(), name='post-delete'),
 

Комментарии:

1. подходит ли вам метод get_template_names ()? docs.djangoproject.com/en/3.1/ref/class-based-views/…

2. Это сработало! Спасибо вам за предложение!