微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TemplateDoesNotExist位于/​​ groups / posts / in / first-post / post / _post.html

如何解决TemplateDoesNotExist位于/​​ groups / posts / in / first-post / post / _post.html

我正在跟踪教程(这是两年前的,所以他们使用的是django和python的旧版本),我完成了博客,一切正常,可以注册登录,发布新论坛,但是当我单击以查看已经创建的博客文章时,出现以下错误。总体而言,我不确定问题出在哪里,是否在_post.html,views.py,models.py urls.py中?

TemplateDoesNotExist at /groups/posts/in/first-post/ post/_post.html

在原子编辑器中,我收到此错误

"GET /groups/posts/in/first-post/ HTTP/1.1" 500 198549

Atom文本编辑器中的错误进一步说明:

File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/backends/django.py",line 84,in reraise
    raise new from exc
django.template.exceptions.TemplateDoesNotExist: post/_post.html
[05/Oct/2020 06:02:06] "GET /groups/posts/in/first-postit/ HTTP/1.1" 500 198648

因此,我认为问题在于它正在寻找“ post / _post.html”,因为它实际上在posts / _post.html中-但是我不知道这个错误在哪里,它只是说“ 84行,正在重新筹款”

这是我的base.html:

<!DOCTYPE html>
{% load static %}
<html>
  <head>
    <Meta charset="utf-8">
    <title>Star Social</title>
    <!-- Latest compiled and minified CSS -->

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

    <!-- Optional theme -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1irsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

    <!-- Latest compiled and minified JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>


    <link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">

  {# NOTE: To use the static,you must put the loadstatic files at the beggining #}
  <link rel="stylesheet" href="{% static 'simplesocial/css/master.css' %}">

  </head>
  <body>
    {# mynav is my own class to setup my css#}
    <nav class="navbar mynav" role="navigation" id="navbar">
        <div class="container">
          <a class="navbar-brand mynav" href="{% url 'home' %}">Star Social</a>
          <ul class="nav navbar-nav navbar-right">
              {% if user.is_authenticated %}
                <li><a href="{% url 'posts:create' %}">Post</a></li>
                <li><a href="{% url 'groups:all'  %}">Groups</a></li>
                <li><a href="{% url 'groups:create' %}">Create group</a></li>
                <li><a href="{% url 'accounts:logout' %}">logout</a></li>
              {% else %}
                <li><a href="{% url 'groups:all' %}" class="btn btn-simple">Groups</a></li>
                <li><a href="{% url 'accounts:login' %}" class="btn btn-simple">Log in</a></li>
                <li><a href="{% url 'accounts:signup' %}" class="btn btn-simple">Sign Up</a></li>
              {% endif %}
          </ul>
        </div>
      </nav>

    <div class="container mycontent">
      {% block content %}
      {% endblock %}
    </div>
  </body>
  <script type="text/javascript" src="{% static 'simplesocial/js/master.js' %}"></script>
</html>

posts文件夹中的urls.py:

from django.conf.urls import url

from posts import views

app_name = 'posts'

urlpatterns = [
    url(r'^$',views.PostList.as_view(),name='all'),url(r'^new/$',views.CreatePost.as_view(),name='create'),url(r'^by/(?P<username>[-\w]+)/$',views.UserPosts.as_view(),name='for_user'),url(r'^by/(?P<username>[-\w]+)/(?P<pk>\d+)/$',views.PostDetail.as_view(),name='single'),url(r'^delete/(?P<pk>\d+)/$',views.DeletePost.as_view(),name='delete'),]

这是posts文件夹中的views.py:

from django.shortcuts import render
# POSTS VIEWS.PY
# Create your views here.

from django.contrib.auth.mixins import LoginrequiredMixin
from django.urls import reverse_lazy
from django.contrib import messages
from django.http import Http404
from django.views import generic

from braces.views import SelectRelatedMixin

from posts import models
from posts import forms

from django.contrib.auth import get_user_model

User = get_user_model() #if someone is logged into a session I am able to use
                        #this User object to get acces to the active user.

class PostList(SelectRelatedMixin,generic.ListView):
    model = models.Post
    select_related = ('user','group')

class UserPosts(generic.ListView):
    model = models.Post
    template_name = 'posts/user_post_list.html'

    def get_queryset(self):
        try:
            self.post_user = User.objects.prefetch_related('posts').get(username__iexact=self.kwargs.get('username'))
        except User.DoesNotExist:
            raise Http404
        else:
            return self.post_user.posts.all()

    def get_context_data(self,**kwargs):
        context = super().get_context_data(**kwargs)
        context['post_user'] = self.post_user
        return context

class PostDetail(SelectRelatedMixin,generic.DetailView):
    model = models.Post
    select_related = ('user','group')

    def get_queryset(self):
        queryset = super().get_queryset()
        return queryset.filter(user__username__iexact=self.kwargs.get('username'))


class CreatePost(LoginrequiredMixin,SelectRelatedMixin,generic.CreateView):
    fields = ('message','group')
    model = models.Post

    def form_valid(self,form):
        self.object = form.save(commit=False)
        self.object.user = self.request.user
        self.object.save()
        return super().form_valid(form)

class DeletePost(LoginrequiredMixin,generic.DeleteView):
    model = models.Post
    select_related = ('user','group')
    success_url = reverse_lazy('posts:all')

    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)

models.py;

from django.db import models
from django.urls import reverse
from django.conf import settings

import misaka

from groups.models import Group
# Create your models here.
# POSTS MODELS.PY

from django.contrib.auth import get_user_model

User = get_user_model()

class Post(models.Model):
    user = models.ForeignKey(User,related_name='posts',on_delete= models.CASCADE)
    created_at = models.DateTimeField(auto_Now=True) # Create_at is the creation date
    message = models.TextField()
    message_html = models.TextField(editable=False)
    group = models.ForeignKey(Group,null=True,blank=True,on_delete= models.CASCADE)

    def __str__(self):
        return self.message

    def save(self,**kwargs):
        # That way,if someone puts a link in their post,it won't show as brackets
        #and all that machine representation. It will show as a true html
        self.message_html = misaka.html(self.message)
        super().save(*args,**kwargs)

    def get_absolute_url(self):
        return reverse('posts:single',kwargs={'username':self.user.username,'pk':self.pk})
    class Meta:
        ordering = ['-created_at'] # the '-' is to be in descending order. The newer first
        unique_together = ['user','message'] #Every message is uniquely linkd to the user

这是回溯

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/groups/posts/in/first-post/

Django Version: 3.1.1
Python Version: 3.8.3
Installed Applications:
['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','bootstrap3','accounts','groups','posts']
Installed Middleware:
['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware']

Template loader postmortem
Django tried loading these templates,in this order:

Using engine django:
    This engine did not provide a list of tried templates.


Template error:
In template /Users/Homepage/Desktop/My_Django_Stuff/simple_social_clone/simplesocial/templates/base.html,error at line 20
   post/_post.html
   10 : 
   11 :     <!-- Optional theme -->
   12 :     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1irsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
   13 : 
   14 :     <!-- Latest compiled and minified JavaScript -->
   15 :     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
   16 : 
   17 : 
   18 :     <link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
   19 : 
   20 :   {#  NOTE: To use the static,you m ust put the loadstatic files at the beggining #}
   21 :   <link rel="stylesheet" href="{% static 'simplesocial/css/master.css' %}">
   22 : 
   23 :   </head>
   24 :   <body>
   25 :     {# mynav is my own class to setup my css#}
   26 :     <nav class="navbar mynav" role="navigation" id="navbar">
   27 :         <div class="container">
   28 :           <a class="navbar-brand mynav" href="{% url 'home' %}">Star Social</a>
   29 :           <ul class="nav navbar-nav navbar-right">
   30 :               {% if user.is_authenticated %}


Traceback (most recent call last):
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/backends/django.py",line 61,in render
    return self.template.render(context)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/base.py",line 170,in render
    return self._render(context)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/base.py",line 162,in _render
    return self.nodelist.render(context)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/base.py",line 938,in render
    bit = node.render_annotated(context)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/base.py",line 905,in render_annotated
    return self.render(context)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/loader_tags.py",line 150,in render
    return compiled_parent._render(context)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/base.py",line 62,in render
    result = block.nodelist.render(context)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/base.py",in render_annotated
    return self.render(context)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/defaulttags.py",line 312,in render
    return nodelist.render(context)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/base.py",line 211,in render
    nodelist.append(node.render_annotated(context))
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/base.py",line 180,in render
    template = context.template.engine.select_template(template_name)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/engine.py",in select_template
    raise TemplateDoesNotExist(','.join(not_found))

The above exception (post/_post.html) was the direct cause of the following exception:
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/core/handlers/exception.py",line 47,in inner
    response = get_response(request)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/core/handlers/base.py",line 202,in _get_response
    response = response.render()
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/response.py",line 105,in render
    self.content = self.rendered_content
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/response.py",line 83,in rendered_content
    return template.render(context,self._request)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/backends/django.py",line 63,in render
    reraise(exc,self.backend)
  File "/Users/Homepage/opt/anaconda3/lib/python3.8/site-packages/django/template/backends/django.py",in reraise
    raise new from exc

Exception Type: TemplateDoesNotExist at /groups/posts/in/first-post/
Exception Value: post/_post.html

解决方法

在我的group_detail.html中,我说的是:

{group.posts.all%中的帖子的%} {%包括“ posts / _post.html”%}

当它应该是“ posts / _post.html”时,我有“ post / _post.html”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。