Я пытаюсь создать простой блог, который показывает различные статьи на главной странице.На индексной странице в настоящее время содержится заголовок и подзаголовок различных статей.Я хочу, чтобы он отображал все содержимое статьи по клику.Это ошибка, с которой я сталкиваюсь на домашней странице.
NoReverseMatch at /
Reverse for 'article' with arguments '('',)' not found. 1 pattern(s) tried: ['(?P<article_id>[0-9]+)$']
Это содержимое urls.py
в приложении страниц, которое я создал.
from django.urls import path
from . import views
urlpatterns=[
path('',views.index,name='index'),
path('<int:article_id>',views.article,name='article'),
path('about',views.about,name='about'),
]
Это мои views.py
from django.shortcuts import render,get_object_or_404
from django.http import HttpResponse
from . models import Post
# Create your views here.
def index(request):
post=Post.objects.all()
context = {
'post' : post
}
return render(request,'pages/index.html',context)
def article(request,article_id):
article=get_object_or_404(Post,pk=article_id)
context = {
'article' : article
}
return render(request,'pages/article.html',context)
def about(request):
return render(request,'pages/about.html')
Как вы, наверное, видите, я имею в виду содержание статей через article_id и данные, относящиеся к конкретному сообщению.* Извлекается из базы данных.
Это мой index.html, который должен перенаправлять содержимое определенного сообщения при клике.
{%extends 'base.html'%}
{%load static%}
{%block content%}
<!-- Page Header -->
<header class="masthead" style="background-image: url({% static 'img/home-bg.jpg' %})">
<div class="overlay"></div>
<div class="container">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
<div class="site-heading">
<h1>Clean Blog</h1>
<span class="subheading">A Blog Theme by Start Bootstrap</span>
</div>
</div>
</div>
</div>
</header>
<!-- Posts -->
{% if post %}
{% for posts in post %}
<div class="container">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
<div class="post-preview">
<a href="{% url 'article' article.id%}">
<h2 class="post-title">
{{posts.title}}
</h2>
{%if posts.subtitle%}
<h3 class="post-subtitle">
{{posts.subtitle}}
</h3>
{%endif%}
</a>
<p class="post-meta">Posted by
<a href="#">{{posts.postby}}</a>
on {{posts.date}}</p>
</div>
<hr>
</div>
</div>
</div>
{% endfor %}
{%endif%}
<!-- Pager -->
<div class="container">
<div class="row">
<div class="col-lg-8 col-md-10 mx-auto">
<div class="clearfix">
<a class="btn btn-primary float-right" href="#">Older Posts →</a>
</div>
</div>
</div>
</div>
<hr>
{%endblock%}
Однако я получаю требуемыйстраницу, когда я набираю localhost: 8000/1 или localhost: 8000/2 вручную, как я хочу.Но проблема в том, что он не перенаправляет на клик.Мое лучшее предположение - то, что это
<a href="{% url 'article' article.id%}">
создает проблему.
Все предложения приветствуются !.Спасибо.