我正在研究一个简单的博客项目,并且一直在YouTube上关注Corey Schafer。在教程中,他用整数创建了新的博客帖子(例如/ blog / 1,/ blog / 2等),但是我想用字符串创建我的帖子路径(例如blog / my-blog-post,/博客/新博客文章)。我是python和django的新手,我尝试过一些运气不好的事情。有关如何执行此操作的任何提示?
型号:
class BloggPost(models.Model):
tittel = models.CharField(max_length=100)
innhold = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='blogg_foto')
def __str__(self):
return self.tittel
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.pk})
网址:
from django.urls import path
from .views import BloggPostListViewHome, BloggPostListView, BloggPostDetailView
from . import views
path('blogg/<int:pk>/', BloggPostDetailView.as_view(), name='bloggpost-detail'),
例如,可以使用slug
中的AutoSlugField
来定义AutoSlugField
字段。
您可以使用以下方法在虚拟环境中安装它:
django-autoslug
package [readthedocs]
然后您可以使用以下方法向模型添加django-autoslug
:
pip install django-autoslug
然后在AutoSlugField
中使用以下命令定义模式:
from autoslug import AutoSlugField
class BloggPost(models.Model):
tittel = models.CharField(max_length=100)
slug = AutoSlugField(populate_from='tittel')
innhold = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='blogg_foto')
def __str__(self):
return self.tittel
def get_absolute_url(self):
return reverse('post-detail', kwargs={'slug': self.slug})
如果URL模式中存在一个从属字段,则带有urls.py
,例如path('blogg/<slug:slug>/', BloggPostDetailView.as_view(), name='bloggpost-detail'),
和SingleObjectMixin
的基于类的视图将自动对从属执行过滤。