#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. Это сработало! Спасибо вам за предложение!