我正在尝试使用Django创建博客。
我已将帖子删节,因此您必须单击该帖子才能阅读整个帖子。本质上,应该将您重定向到article.html,以便您阅读整个博客帖子。如果我尝试转到article.html/1
,则可以阅读该帖子,但是,如果尝试在首页中使用blog.id
进行理智的操作,则会出现错误。
这是我的welcome.html
代码:
<a href="{%url 'article' blog.id %}"><p>{pic.post | truncatewords:10 }}</p></button></a>
我的网址如下:
urlpatterns=[
url(r'^$',views.welcome,name = 'welcome'),
url(r'^post/', views.post, name='post'),
url(r'^article/(\d+)', views.article, name='article'),
url(r'^search/', views.search_results, name='search_results'),
]
if settings.DEBUG:
urlpatterns+= static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
我的观点
def welcome(request):
pics=Blog.objects.all()
return render(request, 'welcome.html', {"pics":pics})
def post(request):
form= PostForm(request.POST or None, request.FILES or None)
if form.is_valid():
post = form.save(commit=False)
post.save()
return redirect('welcome')
else:
form = PostForm()
return render(request, 'post.html', {"form":form})
def search_results(request):
if 'article' in request.GET and request.GET["article"]:
search_term = request.GET.get("article")
print(search_term)
blogs = Blog.search_results(search_term)
message = f"{search_term}"
return render(request 'search.html'{"message":message,"blogs": blogs})
else:
message = "You haven't searched for any term"
return render(request, 'search.html',{"message":message})
def article(request, blog_id):
pics =Blog.objects.filter(id = blog_id)
return render(request, 'article.html', {"pics":pics, id:blog_id})
但是,每次我尝试单击该帖子以便将我重定向到article.html
(以便我可以阅读整个帖子)时,都会出现以下错误:
NoReverseMatch at /
Reverse for 'article' with arguments '('',)' not found. 1 pattern(s) tried: ['article/(\\d+)']
我要去哪里了?
答案 0 :(得分:4)
在欢迎视图中,您会将博客查询集作为图片传递给上下文。
在模板中,您正在使用pic.post
访问帖子内容。因此,我假设您遍历此类{% for pic in pics %}
如果是这样,您可以尝试使用pic.id
访问ID,因此您的网址应为:
{% url 'article' pic.id %}
。