[Python] post() missing 1 required positional argument: 'slug'

Discussão em 'Python' iniciado por Stack, Abril 13, 2025.

  1. Stack

    Stack Membro Participativo

    I'm facing a problem in my Django project, and I need your help. When I try to access the view that handles requests to the post page, I get the following error:

    post() missing 1 required positional argument: 'slug'

    This happens when I try to navigate to a URL that should handle viewing a specific post. I have determined the route in urls.py , which takes the slug parameter, and it looks like this:

    path('post//', post, name='post'),

    In my post view, I expect to accept this parameter, but it looks like it is not being passed properly.

    I would really appreciate any help or advice.

    My models.py:

    from django.db import models
    from django.utils.text import slugify
    from django.contrib.auth import get_user_model

    from django_resized import ResizedImageField
    from tinymce.models import HTMLField
    from hitcount.models import HitCountMixin, HitCount
    from django.contrib.contenttypes.fields import GenericRelation
    from taggit.managers import TaggableManager
    from django.shortcuts import reverse



    User= get_user_model()

    class Author(models.Model):
    user =models.ForeignKey(User,on_delete=models.CASCADE)
    fullname = models.CharField(max_length=40,blank=True)
    slug = slug = models.SlugField(max_length=400,unique=True,blank=True)
    bio = models.TextField(HTMLField)
    points = models.IntegerField(default=0)
    profile_pic = ResizedImageField(size=[50,80],quality=100,upload_to='authors',default=None,null=True,blank=True)

    def __str__(self):
    return self.fullname

    def save(self,*args,**kwargs):
    if not self.slug:
    self.slug = slugify(self.fullname)
    super(Author,self).save(*args, **kwargs)

    class Category(models.Model):
    title = models.CharField(max_length=50)
    slug = models.SlugField(max_length=400,unique=True,blank=True)

    class Meta:
    verbose_name_plural = 'categories'
    def __str__(self):
    return self.title

    def save(self,*args,**kwargs):
    if not self.slug:
    self.slug = slugify(self.title)
    super(Category,self).save(*args, **kwargs)

    class Post(models.Model):
    title = models.CharField(max_length=400)
    slug = models.SlugField(max_length=400,unique=True,blank=True)
    user = models.ForeignKey(Author,on_delete=models.CASCADE)
    content = HTMLField()
    categories = models.ManyToManyField(Category)
    date = models.DateTimeField(auto_now_add=True)
    approved = models.BooleanField(default=False)
    hit_count_generic =GenericRelation(HitCount,object_id_field='object_pk',
    related_query_name='hit_count_generic_relation'
    )
    tags = TaggableManager()



    def save(self,*args,**kwargs):
    if not self.slug:
    self.slug = slugify(self.title)
    super(Post,self).save(*args, **kwargs)



    def __str__(self):
    return self.title

    def get_url(self):
    return reverse("detail", kwargs={'slug': self.slug})


    My urls.py:

    from django.urls import path
    from .views import home
    from .views import detail,post

    urlpatterns = [
    path('', home, name='home'),
    path('detail/<slug>/', detail, name='detail'),
    path('post/<slug>/',post,name='posts'),


    ]


    My views.py:

    from django.shortcuts import render,get_object_or_404
    from .models import Author,Category,Post
    from .utils import update_views

    def home(request):
    return render(request, 'home.html')
    def detail(request,slug):
    post = get_object_or_404(Post,slug=slug)
    context = {
    'post':post,
    }
    update_views(request,post)

    return render(request, 'detail.html',context)

    def post(request,slug):
    category = get_object_or_404(Category,slug=slug)
    posts= Post.objects.filter(approved=True,categories=category)

    context={
    "posts":posts,
    }
    return render(request, 'posts.html',context)
    def image(request):
    return render(request, 'detail.html')

    Continue reading...

Compartilhe esta Página