【发布时间】:2020-11-13 17:16:24
【问题描述】:
我正在通过构建一个简单的博客应用程序来学习 django。虽然这一切都完成了,但我目前有个别帖子的网址格式为https://my_site_dot_com/blog/entry/38/,其中数字 38 对应于所述帖子的主键。
我想要的是格式为https://my_site_dot_com/blog/entry/this_is_custom_title/,其中“this_is_custom_title”对应于帖子的标题。我不知道如何做到这一点。任何人都可以提供任何帮助吗?
我的模型看起来像:
class Entry(models.Model):
entry_title = models.CharField(max_length=50)
entry_text = models.TextField()
image = models.FileField(upload_to="media", blank=True)
entry_date = models.DateTimeField(auto_now_add=True)
entry_author = models.ForeignKey(User, on_delete=models.CASCADE)
class Meta:
verbose_name_plural = "blog"
def __str__(self):
return self.entry_title
我希望 entry_title 指向自定义 url 而不是主键。
我的urls.py 看起来像这样:
urlpatterns = [
path('', HomeView.as_view(), name="blog-home"),
path('entry/<int:pk>/', EntryView.as_view(), name="entry-detail"),
path('create_entry/', CreateEntryView.as_view(success_url='/'), name='create_entry'),
]
编辑: 发帖的班级是这样的:
class EntryView(DetailView):
model = Entry
template_name = 'blog/entry_detail.html'
data_set = random_info()
stuff_for_post = {
"info": data_set
}
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['rand_im'] = random_image()
context['tags'] = ['tag1','tag2','tag3']
return context
我是 django 的绝对菜鸟,来自 android/java。所以请给一个通俗易懂的解释。 提前致谢
【问题讨论】:
标签: python django django-urls url-pattern