Please family, help me out in solving my project. How to use slug to get post details. Here is all my files
-- 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/f1d16888-0cd3-455d-93d7-31a08617a269o%40googlegroups.com.
from django.shortcuts import render, get_object_or_404
from .models import Post
from django.core.paginator import Paginator, PageNotAnInteger,EmptyPage
from django.views.generic import ListView, DetailView
from django.db.models import Q
def IndexList(request):
a_list = Post.objects.filter(status=1).order_by('-created_on')
paginator = Paginator(a_list, 3)
page = request.GET.get('page')
try:
index_list = paginator.page(page)
except PageNotAnInteger:
index_list = paginator.page(1)
except EmptyPage:
index_list = paginator.page(paginator.num_pages)
return render(request, 'Home.html', {'a_list': a_list, 'page': page, 'index_list': index_list})
def NewsList(request):
b_list = Post.objects.filter(category=0, status=1).order_by('-created_on')
paginator = Paginator(b_list, 1)
page = request.GET.get('page')
try:
news_list = paginator.page(page)
except PageNotAnInteger:
news_list = paginator.page(1)
except EmptyPage:
news_list = paginator.page(paginator.num_pages)
return render(request, 'News.html', {'b_list': b_list, 'page': page, 'news_list': news_list})
def EntertainmentList(request):
c_list = Post.objects.filter(status=1, category=1).order_by('-created_on')
paginator = Paginator(c_list, 3)
page = request.GET.get('page')
try:
entertainment_list = paginator.page(page)
except PageNotAnInteger:
entertainment_list = paginator.page(1)
except EmptyPage:
entertainment_list = paginator.page(paginator.num_pages)
return render(request, 'Entertainment.html', {'c_list': c_list, 'page': page, 'entertainment_list': entertainment_list })
def SportsList(request):
d_list = Post.objects.filter(status=1, category=2).order_by('-created_on')
paginator = Paginator(d_list, 3)
page = request.GET.get('page')
try:
sport_list = paginator.page(page)
except PageNotAnInteger:
sport_list = paginator.page(1)
except EmptyPage:
sport_list = paginator.page(paginator.num_pages)
return render(request, 'Sports.html', {'d_list': d_list, 'page': page, 'sport_list': sport_list})
def World_NewsList(request):
e_list = Post.objects.filter(status=1, category=3).order_by('-created_on')
paginator = Paginator(e_list, 3)
page = request.GET.get('page')
try:
world_list = paginator.page(page)
except PageNotAnInteger:
world_list = paginator.page(1)
except EmptyPage:
world_list = paginator.page(paginator.num_pages)
return render(request, 'WorldNews.html', {'e_list': e_list, 'page': page, 'world_list': world_list})
class SearchResultsViews(ListView):
model = Post
template_name = 'Search.html'
def get_queryset(self):
query = self.request.GET.get('q')
object_list = Post.objects.filter(Q(title__icontains=query))
return object_list
def post_details_view(request, post):
f = get_object_or_404(Post, slug=post)
return render(request, 'post_details.html', {'f': f})
from django.db import models
from django.urls import reverse
# Create your models here.
STATUS = (
(0, "Draft"),
(1, "Publish")
)
CATEGORY = (
(0, "News"),
(1, "Entertainment"),
(2, "Sports"),
(3, "WorldNews"),
)
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
slug = models.SlugField(max_length=200, unique=True)
updated_on = models.DateTimeField(auto_now=True)
created_on = models.DateTimeField(auto_now_add=True)
status = models.IntegerField(choices=STATUS, default=0)
image = models.ImageField(upload_to='images/', blank=True)
image1 = models.ImageField(upload_to='images/', blank=True)
image2 = models.ImageField(upload_to='images/', blank=True)
category = models.IntegerField(choices=CATEGORY, default=0)
class Meta:
ordering = ['-created_on']
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('Olofofofo:post_details_view', args=[self.slug])
from django.urls import path
from . import views
from .views import SearchResultsViews
urlpatterns = [
path('', views.IndexList, name='index'),
path('news', views.NewsList, name='news'),
path('entertainment', views.EntertainmentList, name='entertainment'),
path('sports', views.SportsList, name='sports'),
path('world_news', views.World_NewsList, name='world_news'),
path('Search', SearchResultsViews.as_view(), name='search'),
path('<slug:post>/', views.post_details_view, name='post_details'),
]
{% extends 'base.html'%}
{% block title%} Entertainment {%endblock%}
{% block entertainment %}
{% for item in c_list %}
{% endfor %}
{% endfor %}
{% if entertainment_list.has_other_pages %} {% endif %} {% endblock %}

