感谢所有提前看过此书的人!我真的很感激。
我建立了一个非常简单的模型,该模型包含两个参数(标题,即发布日期和文本,仅此而已):
models.py
class Post(models.Model):
title = models.DateField(blank=True, null=True)
body = models.TextField()
def __str__(self):
return str(self.title)
遵循标准的“在Django教程中创建博客”之后,我创建了两个视图,显示了所有已发布内容的列表,以及一个视图,显示了所有选定帖子的详细信息。
views.py
class NowListView(ListView):
model = Post
template_name = 'archive.html'
class NowDetailView(DetailView):
model = Post
template_name = 'then.html'
最后,我有这个urls.py可以成功显示 http://127.0.0.1:8000/now/archive 上的所有帖子,以及 http://127.0.0.1:8000/now/archive/1 (或其他任何网站)上的特定帖子数字,取决于pk)。
urls.py
urlpatterns = [
path('archive', NowListView.as_view(), name='archive'),
path('archive/<int:pk>', NowDetailView.as_view(), name='then'),
]
我想要实现的是在 http://127.0.0.1:8000/now 上显示最新的帖子。
我已经尝试了上百万种方法,但都无济于事,总有碍于发展(写所有这些书都将花费很长时间)。经过所有这些尝试,对我来说很明显,我必须使用查询来提取最新帖子,但是我没有工作方法。
我曾尝试在我的网址中使用此Post.objects.earliest('title')和此Post.objects.order_by('title')。first():
urls.py
urlpatterns = [
path('archive', NowListView.as_view(), name='archive'),
path('archive/<int:pk>', NowDetailView.as_view(), name='then'),
path('>',NowDetailView.as_view(Post.objects.order_by('title').first()), name='then'),
]
这给了我一个错误:
TypeError: as_view() takes 1 positional argument but 2 were given
我也曾尝试在views.py中的类下创建def函数,但是错误是由于某种原因,URL无法导入它。
无论如何,我可能都在想着它,只是愚蠢。如果有人可以帮助我,我将非常感谢!在此先感谢一吨,并为很长的问题感到抱歉!
最好, 拉苏尔·基列耶夫(Rasul Kireev)
答案 0 :(得分:0)
这属于视图。而不是URL。
您需要定义get_object
:
class NowLatestView(DetailView):
model = Post
template_name = 'then.html'
def get_object(self)
return Post.objects.order_by('title').first()