Ошибка при рендеринге шаблона
В шаблоне /app/templates/base.html ошибка в строке 13
объект 'set' необратим
3 <html>
4 <head>
5 <title>Django blog</title>
6 <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400" rel="stylesheet">
7 <link href="{% static 'css/base.css' %}" rel="stylesheet">
8 </head>
9 <body>
10 <div>
11 <header>
12 <div class="nav-left">
13 <h1><a href="{% url 'home' %}">Django blog</a></h1>
14 </div>
15 <div class="nav-right">
16 <a href="{% url 'post_new' %}">+ New Blog Post</a>
17 </div>
18 </header>
19 {% if user.is_authenticated %}
20 <p>Hi {{ user.username }}!</p>
21 <p><a href="{% url 'logout' %}">Log out</a></p>
22 {% else %}
23 <p>You are not logged in.</p>
Я изучаю главу 7: Учетные записи пользователей книги Django для начинающих с использованием 2.1.5. Это работает на localhost. Он не работает на облаке (Heroku) с ошибкой. Он говорит, что объект set не является обратимым. Я использовал версии следующего. django = "== 2.1.5", gunicorn = "== 19.9.0", whitenoise = "== 3.3.1", python_version = "3.7"
# blog/urls.py
from django.urls import path
from .views import (
BlogListView,
BlogDetailView,
BlogCreateView,
BlogUpdateView,
BlogDeleteView, #new
)
urlpatterns = [
path('post/<int:pk>/delete/', BlogDeleteView.as_view(), name='post_delete'), # new
path('post/<int:pk>/edit/', BlogUpdateView.as_view(), name='post_edit'),
path('post/new/', BlogCreateView.as_view(), name='post_new'),
path('post/<int:pk>/', BlogDetailView.as_view(), name='post_detail'),
path('', BlogListView.as_view(), name='home'),
]
# blog/views.py
from django.views.generic import ListView, DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView # new
from django.urls import reverse_lazy #new
from .models import Post
class BlogListView(ListView):
model = Post
template_name = 'home.html'
class BlogDetailView(DetailView):
model = Post
template_name = 'post_detail.html'
class BlogCreateView(CreateView):
model = Post
template_name = 'post_new.html'
fields = '__all__'
class BlogUpdateView(UpdateView): # new
model = Post
template_name = 'post_edit.html'
fields = ['title', 'body']
class BlogDeleteView(DeleteView): # new
model = Post
template_name = 'post_delete.html'
success_url = reverse_lazy('home')