姜戈 2.0。
我们写了我们能想到的最简单的博客。
例如我这样写的models.py
class Post(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
slug = models.SlugField('id_url', max_length=255, unique=True, blank=True, null=True)
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True, null=True)
def get_absolute_url(self):
return redirect('post_detail', slug=self.slug)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
urls.py 看起来像这样:
urlpatterns = [
path(r'', views.post_list, name='post_list'),
# path(r'post/<int:pk>/', views.post_detail, name='post_detail'),
path(r'post/<str:slug>/', views.post_detail, name='post_detail'),
]
让我提醒您,我的目标是让您可以在管理面板中自己设置 URL。
在views.py中,主页面由这样一个函数返回给我们
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
return render(request, 'test/blog.html', {'posts': posts})
但是我必须写什么,以便当我们使用我们在管理面板中设置的 url 点击它时返回帖子的页面,我无法理解。
首先,您需要在主 urls.py 中设置应用程序的名称,假设这是
appname.在模板中,我们可以使用标签
url并循环浏览文章。测试/blog.html
views.post_detail应该看起来像这样: