Django TypeError в / 'set' объект не является обратимым - PullRequest
0 голосов
/ 07 июня 2019

Ошибка при рендеринге шаблона В шаблоне /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')
...