I am writing a simple web app, and I am struggling to access my variable
attributes in one of my templates. The get_object_or_404 method returns my
customized 404 error from my *content_detail.html *file: "No content is
available."
Here are my files:
*archive/archive/urls.py:*
from django.contrib import admin
from django.urls import include, path
from django.views.generic import RedirectView
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('posts/', include('posts.urls')),
path('admin/', admin.site.urls),
path('', RedirectView.as_view(url='posts/', permanent=True)),] +
static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
*archive/posts/urls.py:*
from django.urls import path
from . import views
app_name = 'posts'
urlpatterns = [
path('', views.index, name='index'),
path('<int:pk>/', views.ContentDetailView.as_view(),
name='content-detail'),
]
*archive/posts/models.py:*
import datetime
from django.db import models
from django.utils import timezone
import uuid
class Content(models.Model):
content_head = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Meta:
verbose_name_plural='contents'
def __str__(self):
return self.content_head
def get_absolute_url(self):
return reverse('detail', args=[str(self.id)])
class ContentInstance(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4,
editable=False)
content = models.ForeignKey(Content, on_delete=models.SET_NULL,
null=True)
content_body = models.TextField()
def __str__(self):
return f'{self.id}, {self.content.pub_date}'
*archive/posts/views.py:*
from django.shortcuts import render, get_object_or_404
from .models import Content, ContentInstance
from django.views import generic
def index(request):
archive_list = Content.objects.order_by('-pub_date')[:5]
context = {'archive_list': archive_list}
return render(request, 'posts/index.html', context)
class ContentDetailView(generic.DetailView):
model = Content
def content_detail_view(request, primary_key):
content = get_object_or_404(Content, pk=primary_key)
return render(request, 'posts/detail.html', context={'content':content})
*archive/posts/templates/posts/index.html:*
<!DOCTYPE html>
<html lang="en">
<head>
<title>Title</title>
</head>
<body>
<h1>Heading</h1>
{% if archive_list %}
<ul>
{% for content in archive_list %}
<li><a href="/posts/{{ content.id }}/">{{ content.content_head
}}</a>({{ content.pub_date }})</li>
{% endfor %}
</ul>
{% else %}
<p>No content is available.</p>
{% endif %}
</body>
</html>
*archive/posts/templates/posts/content_detail.html:*
<!DOCTYPE html>
<html lang="en">
<head>
<title>Title</title>
</head>
<body>
<h1>Heading</h1>
<ul>
{% if content %}
{% for contentinstance in content.contentinstance_set.all %}
<li>{{ content.pub_date }}</li>
<li>{{content.content_body}}</li>
{% endfor %}
{% else %}
<li>No content is available</li>
{% endif %}
</ul>
</body>
</html>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/b86505fd-b149-48fd-a01f-b3938cb2b880%40googlegroups.com.