По какой-то причине данные моей модели не отображаются в моем представлении.

Я работаю над проектом блога уже некоторое время и столкнулся с большой проблемой. Когда я перехожу на определенную страницу с записями блога, данные для этой страницы не загружаются. Это не проблема с URL, потому что URL уникален для каждой записи блога. Любая помощь будет принята с благодарностью.

просмотров

from django.shortcuts import render, reverse
from django.http import HttpResponseRedirect
from django.views import generic
from . import models
from django.contrib.auth import get_user_model
User = get_user_model()
from django.urls import reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
# Create your views here.

class create_blog_post(generic.CreateView, LoginRequiredMixin):
    model = models.Blog_Post
    template_name = 'blog_app/creat_post.html'
    fields = ('post_title', 'blog_content')
    success_url = reverse_lazy('blog_app:all')

class view_blog_post(generic.TemplateView):
    model = models.Blog_Post
    template_name = 'blog_app/view_post.html'

class delet_blog_post(generic.DeleteView, LoginRequiredMixin):
    model = models.Blog_Post
    template_name = 'blog_app/delete_post.html'

    def get_queryset(self):
        queryset = super().get_queryset()
        return queryset.filter(user_id = self.request.user.id)

    def delete(self, *args, **kwargs):
        messages.success(self.request, 'Post Deleted')
        return super().delete(*args, *kwargs)

class all_blog_posts(generic.ListView):
    model = models.Blog_Post
    template_name = 'blog_app/all_posts.html'
    #slug_url_kwarg = "slug"

modles.py

from django.db import models
from taggit.managers import TaggableManager

# Create your models here.
class IpModel(models.Model):
    ip = models.CharField(max_length=100)

    def __str__(self):
        return self.ip

class Blog_Post(models.Model):
    slug = models.SlugField(max_length=1000, editable=False, null=True)
    post_title = models.CharField(max_length=100, editable=True, blank=False, null=True)
    blog_content = models.TextField(max_length=10000, blank=False, editable=True, null=True)
    date = models.DateTimeField(blank=False, null=True, auto_now=True, editable=False)
    likes = models.ManyToManyField(IpModel, related_name="post_likes", blank=True)

    def save(self, *args, **kwargs):
        self.slug = self.slug
        super().save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse("mypage_detail", kwargs={"pk": self.pk})

view_post.html

{% extends "base.html" %}

{% block content %}
<div class="jumbotron">
  {{blog_post.post_title}}
  <p>{{blog_post.blog_content}}</p>
</div>
{% endblock %}

Вы используете TemplateView вместо DetailView, который на самом деле использует методы модели по умолчанию.

class view_blog_post(generic.DetailView):
    model = models.Blog_Post
    ...
Вернуться на верх