【问题标题】:get_absolute_url not making any effectget_absolute_url 没有任何效果
【发布时间】:2018-06-14 00:34:14
【问题描述】:

我只在我的模板中使用了这个。我正在关注一个教程。在教程视频中工作,但我无法使其工作。这是我的模板代码:

<i>     {% for object in object_list %}
    <div class="media">
        <div class="media-left">
            <a href="#">
                {% if object.img %} <img class="media-object" src="..." alt="...">
                {% endif %}
            </a>
        </div>
        <div class="media-body">
            {{ object.content }}<br/>
            via {{ object.user }} | {{ object.timestamp|timesince }} ago |
            <a href='{{ object.get_absolute_url }}'>View</a>
        </div>
    </div>
    <hr/> </i>

我的意见.py

<i>

在此处创建您的视图。

class TweetCreateView(FormUserNeededMixin, CreateView):
    form_class = TweetModelForm
    template_name = 'tweets/create_view.html'



class TweetUpdateView(LoginRequiredMixin, UserOwnerMixin, UpdateView):
    form_class = TweetModelForm
    queryset = Tweet.objects.all()
    template_name = 'tweets/update_view.html'
    success_url = '/tweets/'


class TweetDeleteView(LoginRequiredMixin, DeleteView):
    model = Tweet
    template_name = 'tweets/delete_confirm.html'
    success_url = reverse_lazy('tweets:home')


class TweetDetailView(DetailView):
    template_name = "tweets/detail_view.html"
    queryset = Tweet.objects.all()

    def get_object(self):
        print(self.kwargs)
        pk = self.kwargs.get("pk")
        print(pk)
        return Tweet.objects.get(id=pk)


class TweetListView(ListView):
    template_name = "tweets/tweets_list.html"


    def get_queryset(self, *args, **kwargs):
        qs = Tweet.objects.all()
        print(self.request.GET)
        query = self.request.GET.get("q", None)
        if query is not None:
            qs = qs.filter(Q(content=query))
        return qs

    def get_context_data(self, *args, **kwargs):
        context = super(TweetListView, self).get_context_data(*args, **kwargs)
        context['create_form'] = TweetModelForm()
        context['create_url'] = reverse_lazy('tweets:create')
        return context


</i>

我的模型.py

<i>

class Tweet(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, )
    content = models.CharField(max_length=140, validators=[ validate_content ])
    updated = models.DateField(auto_now=True, )
    timestamp = models.DateField(auto_now_add=True, )

    def __str__(self):
        return str(self.content)
</i>

【问题讨论】:

  • 实例属性get_absolute_url是否存在?
  • 我只是更大。实例方法是什么意思?我只在模板中使用了 get_absolute_url。
  • 贴出对应的视图、模型
  • 你在模型中定义了 get_absolute_url() 吗?如果没有,您希望它如何工作?
  • 我之前尝试过,但没有成功。我已经解释过我正在关注视频教程。

标签: python django django-templates


【解决方案1】:

您必须将方法 get_absolute_url 添加到您的模型中,它应该看起来像这样:

def get_absolute_url(self):
    from django.urls import reverse
    return reverse('tweets:detail', kwargs={
        'pk': self.pk
    })

【讨论】:

  • NoReverseMatch at /u'tweet' 不是已注册的命名空间,现在检测到此错误
猜你喜欢
  • 2019-06-19
  • 2017-07-18
  • 2010-10-17
  • 2012-11-25
  • 2013-10-10
  • 2016-08-26
  • 2021-12-15
  • 2013-10-17
  • 1970-01-01
相关资源
最近更新 更多