Django, URL и Просмотры не найдены - PullRequest
0 голосов
/ 26 ноября 2018

Я использую Django 2.1 и тестирую views.py и urls.py Чего я не понимаю, так это того, почему при вводе URL-адреса http://127.0.0.1:8000/blog/post_list я получаю сообщение об ошибке 404

Mytop urls.py:

from django.urls import path
from django.contrib import admin
from django.conf.urls import include, url
from organizer import urls as organizer_urls
from blog import urls as blog_urls

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include(organizer_urls)),
    path('tag/', include(organizer_urls)),
    path('startup/', include(organizer_urls)),
    path('blog/', include(blog_urls))
]

urls.py

from django.urls import path
from blog.views import post_list, post_detail

urlpatterns = [
    path('',
        post_list,
        name='blog_post_list'),
    path(
        '<int:year>/<int:month>/<slug:slug>',
        post_detail,
        name='blog_post_detail'),
]

моего приложения * views.py:

from django.shortcuts import render, get_object_or_404
from .models import Post
# Create your views here.

def post_list(request):
    return render(
        request,
        'blog/post_list.html',
        {'post_list':Post.object.all()}
    )

def post_detail(request, year, month, slug):
    post = get_object_or_404(
        Post,
        pub_date__year=year,
        pub_date__month=month,
        slug=slug)
    return render(
        request,
        'blog/post_detail.html',
        {'post': post})
* 1013 моего приложения сообщение об ошибке:

Используя URLconf, определенный в suorganizer_project.urls, Django пробовал эти шаблоны URL в следующем порядке:

admin / tag / tag_list [name = 'organizer_tag_list'] tag // startup / startup_list[name = 'organizer_startup_list'] startup // [name = 'organizer_startup_detail'] tag / startup / blog / Пустой путь не соответствует ни одному из них.

Почему?Здесь есть URL:

path('',
        post_list,
        name='blog_post_list'),

, который приведет меня к просмотру post_list:

def post_list(request):
    return render(
        request,
        'blog/post_list.html',
        {'post_list':Post.object.all()}
    )

и вернет запрос для всех объектов в post --Post.object.all () --?

Я не понимаю, чего мне не хватает, буду признателен за вашу помощь!:)

1 Ответ

0 голосов
/ 26 ноября 2018

post_list отсутствует в вашем шаблоне URL, но это имя вашей функции.Если вы обращаетесь к URL-адресу таким образом: 127.0.0.1:8000/blog/ он будет работать и вызовет post_list() представление на основе этого шаблона

path('',
    post_list,
    name='blog_post_list'),

Если вы хотите, чтобы ваш URL работал, просто отредактируйте шаблон следующим образом:добавление строки post_list.

path('post_list',
    post_list,
    name='blog_post_list'),
...