Django - не могу опубликовать sh пост - PullRequest
0 голосов
/ 18 февраля 2020

У меня проблема, я просто делаю простой блог. Я хотел иметь возможность сохранять свои посты как черновики, прежде чем публиковать 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". Ничего не делает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...