django 投票系统失败

我很困惑。我正在尝试为博客中的帖子设置投票系统。但姜戈总是在投票积极的一方进行总结,


/blog/models.py


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')

    author = models.ForeignKey(User,

                              on_delete=models.CASCADE,

                              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')

    post_pos = models.IntegerField(default=0)

    post_neg = models.IntegerField(default=0)


    objects = models.Manager() # The default manager.

    published = PublishedManager() # Our custom manager.


    class Meta:

        ordering = ('-publish',)


    def __str__(self):

        return self.title


    def get_absolute_url(self):

        return reverse('blog:post_detail',

                       args=[self.publish.year,

                             self.publish.month,

                             self.publish.day, self.slug])

/blog/urls.py


urlpatterns = [

    path('', views.PostListView.as_view(), name='post_list'),

    path('<int:year>/<int:month>/<int:day>/<slug:post>/',

        views.post_detail,

        name='post_detail'),

    path('<int:post_id>/share/',views.post_share, name='post_share'),

    path('<int:post_id>/',views.positive_post, name='positive_post'),

    path('<int:post_id>/',views.negative_post, name='negative_post'),

]

有谁知道发生了什么事吗?


湖上湖
浏览 115回答 1
1回答

慕标5832272

两个路径解析为相同的 URL。事实上,如果你看看 Django 为{% url 'blog:positive_post' post.id %}和生成的内容{% url 'blog:negative_post' post.id %},它都会返回,并填充。因此 Django 将触发路径列表中匹配的第一个视图。/post.idpost.id.idpost您应该使路径不重叠,例如:&nbsp;&nbsp;&nbsp;&nbsp;path('<int:post_id>/up/',views.positive_post,&nbsp;name='positive_post'), &nbsp;&nbsp;&nbsp;&nbsp;path('<int:post_id>/down/',views.negative_post,&nbsp;name='negative_post'),注意:HTTP 协议第9 节&nbsp;指定 GET 和 HEAD 之类的请求不应产生副作用,因此您不应使用此类请求更改实体。通常,POST、PUT、PATCH 和 DELETE 请求用于此目的。在这种情况下,您<form>将触发一个 POST 请求,或者使用一些 AJAX 调用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python