Приложение в Django не отображает содержимое приложения, как это исправить?
Кнопка Блог не отображает информацию о количестве написанных блогов и сами блоги (при добавлении номера блога в адресной строке ничего не появляется.
[
# all_blogs.html
{% extends "portfolio/base.html" %}
{% load static %}
<h1 id="blogtitle" class="font-weight-bold text-center">Blog</h1>
<h3 class="text-center mb-5">Mike has written {{ blogs.count }} blog{{ blogs.count|pluralize }}</h3>
{% for blog in blogs %}
<div class="row justify-content-center my-3">
<div class="col-md-10">
<a href="{% url 'blog:detail' blog.id %}">
<h2>{{ blog.title }}</h2>
</a>
<h5 class="text-muted">{{ blog.date|date:'M d Y'|upper }}</h5>
<h4> {{ blog.description|striptags|truncatechars:145 }} </h4>
</div>
</div>
{% endfor %}
# apps.py
from django.apps import AppConfig
class BlogConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'blog'
# urls.py
from django.urls import include, path
from django.conf.urls.static import static
from django.conf import settings
from . import views
app_name = 'blog'
urlpatterns = [
path('', views.all_blogs, name='all_blogs'),
path('<int:blog_id>/', views.detail, name='detail'),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
# views.py
from django.shortcuts import render, get_object_or_404
from .models import Blog
def all_blogs(request):
blogs = Blog.objects.order_by('-date')[:5]
return render(request, 'blog/all_blogs.html', {'blogs': blogs})
def detail(request, blog_id):
blog = get_object_or_404(Blog, pk=blog_id)
return render(request, 'blog/detail.html',{'blog':blog})
# detail.html
{% extends "portfolio/base.html" %}
{% load static %}
<h1 class="text-center mt-5" id="blogdetailtitle">{{ blog.title }}</h1>
<h5 class="text-center text-muted mb-5">{{ blog.date|date:'F jS Y' }}</h5>
<h5> {{ blog.description|safe }} </h5>
# settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'portfolio',
]
Ответы (2 шт):
Была похожая проблема, тогда у меня просто была не заполнена база данных и следовательно он ничего не отображал. Если у вас есть какая то статическая информация которая должна отображаться по дефолту а ее нет. ТО откройте в браузере страницу через F12 и посмотрите ошибки. Там скорее всего будет указано по какому пути он ищет фотографии. И сравните со своим путём. Я посмотрел что статической инфы у вас нет(ему нечего отображать), следовательно попробуйте заполнить базу. И желательно прикрепите файл models.py
{% extends "portfolio/base.html" %}
{% load static %}
<h1 id="blogtitle" class="font-weight-bold text-center">Blog</h1>
<h3 class="text-center mb-5">Mike has written {{ blogs.count }} blog{{ blogs.count|pluralize }}</h3>
{% for blog in blogs %}
<div class="row justify-content-center my-3">
<div class="col-md-10">
<a href="{% url 'blog:detail' blog.id %}">
<h2>{{ blog.title }}</h2>
</a>
<h5 class="text-muted">{{ blog.date|date:'M d Y'|upper }}</h5>
<h4> {{ blog.description|striptags|truncatechars:145 }} </h4>
</div>
</div>
{% endfor %}
Когда вы расширяете шаблон другим шаблоном (portfolio/base.html) в базовом шаблоне должны быть определены блоки
{% block example_block %}
<!-- тут что то будет -->
{% endblock %}
А в шаблоне, который использует этот шаблон, указывай контент в этом блоке, чтобы переопределить этот контент
{% extends 'portfolio/base.html' %}
{% block example_block %}
{% for blog in blogs %}
<div class="row justify-content-center my-3">
<div class="col-md-10">
<a href="{% url 'blog:detail' blog.id %}">
<h2>{{ blog.title }}</h2>
</a>
<h5 class="text-muted">{{ blog.date|date:'M d Y'|upper }}</h5>
<h4> {{ blog.description|striptags|truncatechars:145 }} </h4>
</div>
</div>
{% endfor %}
{% endblock %}
В вашем случае, блок скорее всего стоит назвать content