Skip to main content
 首页 » 编程设计

python之Django:我的模板没有加载/被调用

2024年10月25日30jillzhang

编辑:正如@HåkenLid 所说,我应该将其作为 2 个单独的帖子提出,第一个问题(关于模板)已得到解答!

我是 Django 的新手,到目前为止我一直玩得很开心。我正在尝试建立一个有趣的博客,但我遇到了一些问题。

这是我的模型、表单、url、 View 和文件树:

http://i.imgur.com/KsLV3d9.png

对于第一个问题:(为了节省空间我只添加了每个文件的一部分)

#blog/views.py 
class BlogDetail(generic.DetailView): 
model = Entry 
template_name = "blog/entry_detail.html" 
 
 
#blog/templates/blog/entry_detail.html 
{% extends "base.html" %} 
{% load django_markdown %} 
 
<div class="post"> 
  <h2><a href="{% url "entry_detail" slug=object.slug %}">{{ object.title }}</a></h2> 
  <p class="meta"> 
    {{ object.creation_date }} | 
    Tagged under {{  object.tags.all|join:", " }} 
  </p> 
  {{ object.body|markdown }} 
</div> 
 
 
#blog/urls.py 
urlpatterns = patterns( 
    '', 
    url(r'^$', views.BlogIndex.as_view(), name="index"), 
    url(r'^entry/(?P<slug>\S+)$', views.BlogDetail.as_view(), name="entry_detail"), 
) 
 
 
#blog/models.py 
class Entry(models.Model): 
    title = models.CharField(max_length=100) 
    body = models.TextField() 
    slug = models.SlugField(max_length=100, unique=True) 
    creation_date = models.DateTimeField(editable=False) 
    publication_date = models.DateTimeField(editable=False, null=True) 
    modification_date = models.DateTimeField(editable=False) 
 
    author = models.ForeignKey(User) 
    categories = models.ManyToManyField(Category) 
    tags = models.ManyToManyField(Tag) 
 
    objects = EntryQuerySet.as_manager() 
 
    def __str__(self): 
        return self.title 
 
    def was_published_recently(self): 
        now = datetime.datetime.now() 
        return now - datetime.timedelta(days=1) <= self.publication_date <= now 
 
    def is_published(self): 
        return self.publication_date is not False 
 
    is_published.boolean = True 
    is_published.short_description = 'Is it Published?' 
 
    def get_absolute_url(self): 
        return reverse("entry_detail", kwargs={"slug": self.slug}) 
 
    class Meta(): 
        verbose_name = "Blog Entry" 
        verbose_name_plural = "Blog Entries" 
        ordering = ['-creation_date'] 
 
    def save(self, *args, **kwargs): 
        """ On save, update timestamps """ 
        if not self.id: 
            self.creation_date = datetime.datetime.now() 
        self.modification_date = datetime.datetime.now() 
        return super(Entry, self).save(*args, **kwargs) 

当我输入类似

的内容时

localhost:8000/entry/this-is-an-entry-title-slug

e.j: http://i.imgur.com/c7yir79.png

我没有得到条目的详细信息,只有 base.html 中定义的标题之类的东西,我真的不知道为什么它没有被加载。

一如既往,非常感谢您的帮助,如果这是非常基本的问题,我深表歉意,但到目前为止我还没有找到任何解决方案。

请您参考如下方法:

扩展模板时需要使用 {% block %}

如果您在 base.html 中有一个名为“content”的 block ,您可以这样做:

#blog/templates/blog/entry_detail.html 
{% extends "base.html" %} 
{% load django_markdown %} 
{% block content %} 
<div class="post"> 
  <h2><a href="{% url "entry_detail" slug=object.slug %}">{{ object.title }}</a></h2> 
  <p class="meta"> 
    {{ object.creation_date }} | 
    Tagged under {{  object.tags.all|join:", " }} 
  </p> 
  {{ object.body|markdown }} 
</div> 
{% endblock content %}