是否可以在一个函数中同时使用slug和id? 我有这个在我的房间里视图.py你知道吗
@login_required
def comment_thread(request, id, slug):
hotCat = Category.objects.get_hotCat()
post = get_object_or_404(Post, slug=slug)
post.views += 1 # increment the number of views
post.save() # and save it
comment = Comment.objects.get(id=id)
form = CommentForm()
context = {
"form": form,
"comment": comment,
"hotCat":hotCat,
#"post":post
}
return render(request, "comments/comment_thread.html", context)
有了这个,我得到注释\u thread()正好取3个参数(给定2个) 所以我觉得问题出在我身上网址.py原来是
url(r'^comment/(?P<id>\d+)$', 'comment_thread', name='comment_thread'),
但即使我换了工作
url(r'^comment/(?P<id>\d+)/(?P<slug>[\w|\-]+)/$', 'comment_thread', name='comment_thread'),
它给了我找不到的页面。 所以我意识到,问题是
<a href='{{ comment.get_absolute_url }}' target="_blank">
我需要改变
def get_absolute_url(self):
return reverse('comment_thread', kwargs={"id": self.id})
但这就是我被困的地方。你知道吗
这是我的模型
class Comment(models.Model):
user = models.ForeignKey(MyProfile)
parent = models.ForeignKey("self", null=True, blank=True)
path = models.CharField(max_length=350)
post = models.ForeignKey(Post, null=True, blank=True, related_name="commented_post")
text = models.TextField()
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
active = models.BooleanField(default=True)
objects = CommentManager()
class Meta:
ordering = ['-timestamp']
def __unicode__(self):
return self.text
def get_absolute_url(self):
return reverse('comment_thread', kwargs={"id": self.id})
class Post(models.Model):
slug = models.CharField(max_length=255, unique=True)
我只是不知道如何在comment\u线程视图中使用slug作为post,以便在模板中使用post。你知道吗
另外,除了这个问题,有没有人知道如何使target=“\u blank”效果;在HttpResponseRedirect保留现有页面的情况下在新选项卡中打开?你知道吗
您需要向模型中添加
slug
字段。参考以下示例:然后你的
get_absolute_url
就变成了上面定义的
save
函数基本上设置了第一次保存模型时的slug(使用其名称作为url)。这可以防止您的评论的url发生更改,即使您稍后编辑它。你知道吗即使对于
Post
,也要将slug
字段更改为models.SlugField()
相关问题 更多 >
编程相关推荐