Я пытаюсь перенаправить пользователя к сообщению в соответствии со значением slug. Я использую django -autoslug , чтобы автоматически заполнить слаг в зависимости от заголовка. Я пытаюсь зафиксировать значение slug в переменной sl, однако я получаю KeyError at / 'slug'
ошибку.
urls.py
urlpatterns = [
path('', views.index),
path('<slug:slug>/', views.PostDetail.as_view(), name='post_detail'),
]
models.py
from django.db import models
from django.template.defaultfilters import slugify
from autoslug import AutoSlugField
class express_publish(models.Model):
title=models.CharField(max_length=200)
slug = AutoSlugField(populate_from='title',unique=True)
author=models.CharField(max_length=50)
body=models.TextField()
time=models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
просмотров .py
from django.shortcuts import render,redirect
from django.views import generic
from .models import *
from .forms import *
def index(request):
all_publish=express_publish.objects.all()
form=express_publishForm()
if request.method=="POST":
form=express_publishForm(request.POST)
if form.is_valid():
form.save()
sl=form.cleaned_data['slug']
return redirect('/'+sl)
context={'all_publish':all_publish,'form':form}
return render(request,'publish/index.html',context)
class PostDetail(generic.DetailView):
model = express_publish
template_name = 'publish/post_detail.html'