У меня проблема, я просто делаю простой блог. Я хотел иметь возможность сохранять свои посты как черновики, прежде чем публиковать sh их. Я следую пошаговому видео, у меня почти все то же самое, и все еще есть некоторая проблема - функция publi sh не работает. У вас есть идеи, почему?
models.py
from django.db import models
from django.utils import timezone
from django.urls import reverse
# Create your models here.
class Post(models.Model):
autor = models.ForeignKey('auth.User', on_delete=models.CASCADE)
tytuł = models.CharField(max_length = 200)
tekst = models.TextField()
create_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def get_absolute_url(self):
return reverse("post_detail", kwargs={'pk':self.pk})
def __str__(self):
return self.title
views.py (эта функция)
@login_required
def post_publish(request, pk):
post = get_object_or_404(models.Post, pk=pk)
post.publish()
return redirect('post_detail', pk=pk)
и оператор if в файле html:
{% if post.published_date %}
<div class="date postdate">
{{ post.published_date }}
</div>
{% else %}
<a class="btn btn-outline-dark" href="{% url 'post_publish' pk=post.pk %}">Publish</a>
{% endif %}
urls.py
from django.urls import path, re_path
from . import views
urlpatterns = [
path('', views.IndexView.as_view(), name="index"),
path('about/', views.AboutView.as_view(), name="about"),
path('posts/', views.PostListView.as_view(), name="post_list"),
re_path(r'posts/(?P<pk>\d+)/', views.PostDetailView.as_view(), name="post_detail"),
path('posts/new/', views.CreatePostView.as_view(), name="post_new"),
re_path(r'posts/(?P<pk>\d+)/edit/', views.PostUpdateView.as_view(), name="post_edit"),
re_path(r'posts/(?P<pk>\d+)/remove/', views.PostDeleteView.as_view(), name="post_remove"),
path('drafts/', views.DraftListView.as_view(), name="post_draft_list"),
re_path(r'posts/(?P<pk>\d+)/publish/', views.post_publish, name="post_publish")
]
Все хорошо, пока я не нажимаю "publi sh". Ничего не делает