Django, включая один шаблон в другом, результаты TemplateDoesNotExist в / - PullRequest
0 голосов
/ 08 апреля 2020

Я использую Django 3.0.4, Python, 3.8, VS Code и Windows 10. Я хочу включить шаблоны post_list. html и post_new. html в свою базу. html файл. Мне нужно показать их все на главном сайте. Я просто хочу, чтобы одна страница содержала эти шаблоны. Я думаю, что это позволило бы мне воспроизводить аудиофайл последовательно, даже когда я отправляю сообщение - страница не перезагрузится, я верю (но я еще не достиг этой фазы проекта).

Я начал достигать своего цель, включив мой шаблон post_new. html в базу. html. Однако я раскрутил сервер, посетил основной сайт и столкнулся с проблемой:

TemplateDoesNotExist at /

post_new.html

Request Method:     GET
Request URL:    http://127.0.0.1:8000/
Django Version:     3.0.4
Exception Type:     TemplateDoesNotExist
Exception Value:    

post_new.html

Exception Location:     C:\Users\marecki\Desktop\mareknasz_projekt\evviva_larte\venv\lib\site-packages\django\template\backends\django.py in reraise, line 84
Python Executable:  C:\Users\marecki\Desktop\mareknasz_projekt\evviva_larte\venv\Scripts\python.exe
Python Version:     3.8.0
Python Path:    

['C:\\Users\\marecki\\Desktop\\mareknasz_projekt\\evviva_larte\\ewiwa',
 'C:\\Program Files (x86)\\Python38-32\\python38.zip',
 'C:\\Program Files (x86)\\Python38-32\\DLLs',
 'C:\\Program Files (x86)\\Python38-32\\lib',
 'C:\\Program Files (x86)\\Python38-32',
 'C:\\Users\\marecki\\Desktop\\mareknasz_projekt\\evviva_larte\\venv',
 'C:\\Users\\marecki\\Desktop\\mareknasz_projekt\\evviva_larte\\venv\\lib\\site-packages']

Server time:    Wed, 8 Apr 2020 12:57:51 +0200

В settings.py я включил следующее:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
'DIRS': [
            os.path.join(BASE_DIR, 'templates')
        ],

Это база. html:

{% load static %}
{% include "post_new.html" %}
<html>
    <head>        
        <link rel="shortcut icon" href="{% static '/assets/favicon-32x32.png' %}" />   
        <link href='http://fonts.googleapis.com/css?family=Amatic+SC&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
        <link href='http://fonts.googleapis.com/css?family=Audiowide&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
        <link href='http://fonts.googleapis.com/css?family=Amarante&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
        <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.bundle.min.js" integrity="sha384-6khuMg9gaYr5AxOqhkVIODVIvm9ynTT5J4V1cfthmT+emCG6yVmEZsRHdxlotUnm" crossorigin="anonymous"></script>
        <link rel="stylesheet" href="{% static 'css/blog.css' %}">      
        <script src="https://cdnjs.cloudflare.com/ajax/libs/howler/2.1.3/howler.core.min.js"></script>
        <title>miśnia i maśnia</title>  
        </head>
    <body>       
        <div class="page-header">
            <a href="{% url 'post_new' %}" class="top-menu"><span>
                <svg class="bi bi-plus-circle" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                    <path fill-rule="evenodd" d="M8 3.5a.5.5 0 01.5.5v4a.5.5 0 01-.5.5H4a.5.5 0 010-1h3.5V4a.5.5 0 01.5-.5z" clip-rule="evenodd"/>
                    <path fill-rule="evenodd" d="M7.5 8a.5.5 0 01.5-.5h4a.5.5 0 010 1H8.5V12a.5.5 0 01-1 0V8z" clip-rule="evenodd"/>
                    <path fill-rule="evenodd" d="M8 15A7 7 0 108 1a7 7 0 000 14zm0 1A8 8 0 108 0a8 8 0 000 16z" clip-rule="evenodd"/>
                  </svg>
            </span></a>
            <h1><a href="/">prezentacja zależności w konkursie czterech zgłośni</a></h1>        
        </div>
        <div class="content-container">
            <div class="row">
                <div class="col-md-8">
                    {% block content %}                                   
                    {% endblock %}   
                </div>
            </div>
        </div>


        <!-- <script>
            function playMusic(){
            music.play();
            }
            </script>
          <html>        
            <audio id="music" loop src="{% static '/assets/joint_stereo.mp3' %}" autoplay> </audio>
            </html> -->




    </body>
</html>

Это post_new. html:

{% extends 'blog/base.html' %}
{% load crispy_forms_tags %}

{% block content %}    
    <form method="POST" class="post-form" >
        {% csrf_token %}
        {{ form|crispy }}
        <button type="submit" class="btn btn-outline-danger">en garde</button>
    </form>
{% endblock %}

Это post_list. html

      {% extends 'blog/base.html' %}
      {% block content %}
            {% for post in posts %}
                <div class="post">
                    <div class="author">
                        <p>przez: {{ post.author }}</p>
                    </div>
                    <div class="text-content">
                        <p>{{ post.text|linebreaksbr }}</p>
                    </div>
                </div>
            {% endfor %}
         {% endblock %}

Это мои URL .py (показывает, что текстовый файл не работает):

from django.urls import path
from . import views
from django.conf.urls.static import static


urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('post/new/', views.post_new, name='post_new'), 
    path('poem/', views.poem, name='poem'),     
] 

views.py:

from django.shortcuts import render, redirect, get_object_or_404
from .models import Post
from .forms import PostForm
from django.http.response import HttpResponseRedirect


def post_list(request):
    posts = Post.objects.all().order_by('-created_date')
    return render(request, 'blog/post_list.html', {'posts': posts})  

def post_new(request):   
    if request.method == "POST":    
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)            
            post.save()    
            return HttpResponseRedirect('/')          
    else:
        form = PostForm()
    return render(request, 'blog/post_new.html', {'form': form})

def poem(request):
    f = open('blog\static\\assets\ewiwa.txt', 'r', encoding="latin-1")
    file_content = f.read()
    f.close()
    context = {'file_content': file_content}
    return render(request, "index.html", context)

И вот как я расположил мои файлы:

enter image description here

Я думаю, что мне нужно сказать, что должен делать мой веб-сайт: на основном сайте я ожидаю, чтобы иметь список сообщений, форму и текстовый файл. После отправки сообщения нигде не должно быть перезагрузки и перенаправления.

С уважением, Марк, начинающий программист

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