Я использую 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)
И вот как я расположил мои файлы:
Я думаю, что мне нужно сказать, что должен делать мой веб-сайт: на основном сайте я ожидаю, чтобы иметь список сообщений, форму и текстовый файл. После отправки сообщения нигде не должно быть перезагрузки и перенаправления.
С уважением, Марк, начинающий программист