【发布时间】:2017-10-24 10:54:56
【问题描述】:
我学习 django 已经有一点时间了,但是我已经把自己搞砸了。两天来我一直在寻找答案,令人讨厌的是,我想我在某个阶段偶然发现了它,但直到后来我才意识到我忘记更改模板(那时我忘记了我阅读的帖子,所以我可以重新创建它)。
我正在尝试创建一些用户可以注册的东西,然后创建一个“频道”来存储他们的东西。我让它工作得很好,但现在我想让它看起来更好(比如 Github 或 youtube)。
我希望 URL 显示为“example.com/channels/channel-name”而不是“example.com/channels/1”
这是我目前所拥有的:
网址:
url(r'^(?P<slug>[\w-]+)/$', channel_views.DetailView.as_view(), name="channel-detail"),
(注意:当 slug 更改为 (?P< pk >[0-9]+) 时,它可以工作)
观看次数:
class DetailView(generic.DetailView):
model = Channel
template_name = 'channels/channel-detail.html'
模型
class Channel(models.Model):
name = models.CharField(max_length=50)
description = models.TextField(max_length=150)
def get_absolute_url(self):
return reverse('channels:channel-detail', kwargs={'slug':self.name})
index.html:
<a class="channel-link text-center" href="{% url 'channels:channel-detail' channel.id %}">{{channel.name}}</a>
我觉得我需要通过 slugify 运行“名称”字段,然后在 HTML 模板中调用它而不是 channel.id?
【问题讨论】:
-
您应该存储一个单独的 slug 字段,该字段会根据名称自动填充。
标签: django django-models django-urls