Python Django QuerySet为空,而我添加了一些内容

Python Django QuerySet为空,而我添加了一些内容,python,django,python-3.x,django-templates,django-views,Python,Django,Python 3.x,Django Templates,Django Views,你好,我是Django的新手,我决定做一个博客页面。问题是,在创建新应用程序之后,我的查询集是空的。知道为什么吗 尝试使用活动和不使用活动 views.py models.py url.py blog.html {%for object_blog%} {%if obj.image%} {%else%} 没有照片 {%endif%} {{obj.title}} {{obj.description}切片:::255} {{obj.timestamp} {%endfor%} 我使用的模式与我在不同的

你好,我是Django的新手,我决定做一个博客页面。问题是,在创建新应用程序之后,我的查询集是空的。知道为什么吗

尝试使用活动和不使用活动

views.py

models.py

url.py

blog.html

{%for object_blog%}
{%if obj.image%}
{%else%}
没有照片
{%endif%}
{{obj.title}}

{{obj.description}切片:::255}

{{obj.timestamp} {%endfor%}

我使用的模式与我在不同的应用程序中使用的模式几乎相同,在不同的应用程序中,一切正常。几天前,我从Django方面注意到一些奇怪的行为,因为它确实想在网站上向我显示图像,直到我完全重新启动电脑。如果有人需要更多信息/查看不同的文件,我可以提供更多信息。这里有几张我的Django管理员的照片。

你的两个视图
BlogPostListView
BlogPost\u list\u视图
做了几乎完全相同的事情,我不知道为什么你有两个。但是请注意,第一个是您的URL实际使用的


现在,该视图是一个基于类的视图,它将向模板发送一个名为
blog\u list
object\u list
的变量。但是,模板本身正在迭代一个名为
object\u blog
的变量,该变量将由(未使用的)第二个视图发送。您应该将其更改为
object\u list
——或者,在视图中,您可以添加
context\u object\u name='object\u blog'
(但我不建议这样做)。

[![Django Admin][1][1][![blog Post][2][2][![Website][3][3][1]:[2]:[2]:[3]:您的
活动()
doing?它应该只过滤那些带有Active复选框的,但我用它尝试了一下,结果发现(它只是一个过滤器)我在html代码中的object\u列表之前就已经有了,而不是Objecty\u blog,但是没有用
from django.shortcuts import render, get_object_or_404
from django.views.generic import ListView, DetailView

from django.http import Http404


from .models import BlogPost


class BlogPostListView(ListView):
    queryset = BlogPost.objects.all().active()
    template_name = "blog.html"

    def get_queryset(self, *args, **kwargs):
        request = self.request
        return BlogPost.objects.all().active()


def BlogPost_list_view(request):
    queryset = BlogPost.objects.all().active()
    context = {
        'object_blog': queryset
    }
    return render(request, "blog.html", context)
import random
import os

from django.db import models
from django.db.models.signals import pre_save, post_save
from django.urls import reverse

def get_filename_ext(filepath):
    base_name = os.path.basename(filepath)
    name, ext = os.path.splitext(base_name)
    return name, ext


def upload_image_path(instance, filename):
    print(instance)
    print(filename)
    new_filename = random.randint(1,18341264712)
    name, ext = get_filename_ext(filename)
    final_filename = '{new_filename}{ext}'.format(new_filename= new_filename, ext=ext)
    return "products/{new_filename}/{final_filename}".format(
        new_filename= new_filename,
        final_filename=final_filename
    )


class BlogPostQuerySet(models.query.QuerySet):
    def active(self):
        return self.filter(active=True)

    def featured(self):
        return self.filter(featured=True, active=True)


class BlogPostManager(models.Manager):
    def get_queryset(self):
        return BlogPostQuerySet(self.model, using=self._db)

    def all(self):
        return self.get_queryset()


class BlogPost(models.Model):
    title = models.CharField(max_length=120)
    slug = models.SlugField(blank=True, unique=True)
    description = models.TextField()
    image = models.ImageField(upload_to=upload_image_path, null=True, blank=True)
    timestamp = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=True)

    objects = BlogPostManager()

    def get_absolute_url(self):
        return "{slug}/".format(slug=self.slug)

        # return reverse("products:detail", kwargs={"slug": self.slug})

    def __str__(self):
        return self.title

    def __unicode__(self):
        return self.title
from django.conf import settings
from django.conf.urls import url, include
from django.conf.urls.static import static

from .views import BlogPostListView, BlogPostDetailSlugView



urlpatterns = [
    url(r'^$', BlogPostListView.as_view(), name='list'),
    url(r'^(?P<slug>[-\w]+)/$', BlogPostDetailSlugView.as_view(), name='detail'),
]

if settings.DEBUG:
    urlpatterns = urlpatterns + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns = urlpatterns + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
from django.contrib import admin
from .models import BlogPost


class BlogPostAdmin(admin.ModelAdmin):
    list_display = ['__str__', 'slug']

    class Meta:
        model = BlogPost


admin.site.register(BlogPost, BlogPostAdmin)
{% for obj in object_blog %}

          <!-- Blog Post -->
          <div class="card mb-4 text-white bg-dark">
            {% if obj.image %}
            <!-- {{MEDIA_URL}} -->
            <img class="card-img-top" src="{{ obj.image.url }}" alt="Card image cap">
            {% else %}
            <h1> No pic </h1>
            {% endif %}
            <div class="card-body">
              <h2 class="card-title">{{ obj.title }}</h2>
              <p class="card-text">{{ obj.description|slice:":255" }} ...</p>
              <a href="#" class="btn btn-primary">Read More &rarr;</a>
            </div>
            <div class="card-footer text-muted">
              {{ obj.timestamp }}
              <a href="#">Start Bootstrap</a>
            </div>
          </div>

          {% endfor %}