Пару недель пытаюсь изучать django 2.1
Маленький бложек получается.. не совсем получается.
models.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.db import models
class Post(models.Model):
STATUS_CHOICES = (
('draft', 'Draft'),
('published', 'Published'),
)
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250, unique_for_date='publish', verbose_name='URL')
# author = models.ForeignKey(User, related_name='blog_posts')
body = models.TextField()
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='draft')
def __str__(self):
return self.title
def get_absolute_url(self):
return (self.slug)
views.py
from django.shortcuts import render, get_object_or_404
from django.views.generic import DetailView
from django.http import HttpResponseRedirect
from blog.models import Post
def index(request):
post_title = Post.objects.all().last().title
post_time = Post.objects.all().last().created
post_body = Post.objects.all().last().body
post_slug = Post.objects.all().last().slug
return render(request, 'blog/index' , {'post_title': post_title, 'post_time': post_time, 'post_body': post_body, 'post_slug': post_slug})
def list_post(request):
post_all=[]
for i in Post.objects.all().order_by('-publish'):
post_all.append([i.title, i.created, i.body, i.slug ])
return render(request, 'blog/list_post', {'post_all': post_all})
def about_blog(request):
return render(request, 'blog/about_blog')
def new_post(request):
text = 'THIS IS TEST'
return render(request, 'blog/new_post', {'text': text})
def read_post(request, slug):
post_title = Post.objects.get(slug=slug).title
post_time = Post.objects.get(slug=slug).created
post_body = Post.objects.get(slug=slug).body
post_slug = Post.objects.get(slug=slug).slug
return render(request, 'blog/read_post', {'post_title': post_title, 'post_time': post_time, 'post_body': post_body, 'post_slug': post_slug})
urls.py
urlpatterns = [
path('', views.index, name='index'),
path('index/', views.index, name='index'),
path('list_post/', views.list_post, name='list_post'),
path('<slug>/', views.read_post, name='read_post'),
path('about_blog/', views.about_blog, name='about_blog'),
path('new_post/', views.new_post, name='new_post'),
'about_blog' и 'new_post' отдают:
DoesNotExist at /about_blog/
Post matching query does not exist.
Request Method: GET
Request URL: http://127.0.0.1:8000/about_blog/
Django Version: 2.1
Exception Type: DoesNotExist
Exception Value:
Post matching query does not exist.
/home/iv/project/virtualenv/exempl/blog/views.py in read_post
post_title = Post.objects.get(slug=slug).title
...
▼ Local vars
Variable Value
request
<WSGIRequest: GET '/about_blog/'>
slug
'about_blog'
ЧТО вообще происходит?