Передача идентификатора в URL домашней страницы Django - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь создать блог, используя django.

Я обрезал пост так, что вам нужно нажать на пост, чтобы прочитать весь пост. По сути, вы должны быть перенаправлены на article.html, где вы можете прочитать весь пост в блоге. Если я попытаюсь перейти к своему article.html/1, я смогу прочитать сообщение, но если я попытаюсь сделать вменяемое с помощью blog.id на своей домашней странице, я получу ошибку.

Это мой welcome.html код:

<a href="{%url 'article' blog.id %}"><p>{pic.post | truncatewords:10 }}</p></button></a>

Мои URL-адреса следующие:

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+)']

Куда я иду не так?

1 Ответ

0 голосов
/ 15 января 2019

При желании вы передаете набор запросов блога как картинки в контекст.

И в своем шаблоне вы используете pic.post для доступа к содержимому публикации. Так что я предполагаю, что вы просматриваете сообщения вроде этого {% for pic in pics %}

Если это так, вы можете попытаться получить доступ к идентификатору, используя pic.id, чтобы ваш URL был:

{% url 'article' pic.id %}.

...