код для использования.

я есть следующая ошибка при попытке загрузить определенные индексы (относящиеся к сообщениям в блоге) с помощью Django.

Ошибочный код ниже - кто-нибудь может помочь указать на ошибку?

        path(r'(?P)<pk>\d+)', DetailView.as_view(model = Post,template_name = 'blog/post.html'))

Весь код в этом файле urls.py для отображения контекста находится здесь:

from django.urls import path
from django.conf.urls import url, include
from django.views.generic import ListView, DetailView
from blog.models import Post


#it's already going to blog/, so this regular expression is just blank

urlpatterns = [

        path(r'', ListView.as_view(queryset=Post.objects.all().order_by("-date") [:25], 
                                                       template_name="blog/blog.html")),

        path(r'(?P)<pk>\d+)', DetailView.as_view(model = Post,template_name = 'blog/post.html'))

] URL, который я пытаюсь получить:

http://127.0.0.1:8000/blog/2

и ошибка на странице:

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/blog/2
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
admin/
[name='index']
blog/
blog/ (?P)<pk>\d+)
The current path, blog/2, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

Вкратце, мне нужна помощь в поиске ошибки в следующем фрагменте кода (первый путь работает нормально, это ВТОРОЙ ПУТЬ, который не работает)

urlpatterns = [

        path(r'', ListView.as_view(queryset=Post.objects.all().order_by("-date") [:25], 
                                                       template_name="blog/blog.html")),

        path(r'(?P)<pk>\d+)', DetailView.as_view(model = Post,template_name = 'blog/post.html'))

]

ОБНОВИТЬ Я изменил код, чтобы убрать ошибочную скобку:

path(r'(?P<pk>\d+)', DetailView.as_view(model = Post,template_name = 'blog/post.html'))]

Но это все еще не работает ...

Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
admin/
[name='index']
blog/
blog/ (?P<pk>\d+)
The current path, blog/2, didn't match any of these.

Пытаюсь предложить ответ Я пытался использовать это, но ошибка не устранена

urlpatterns = [

        path(r'', ListView.as_view(queryset=Post.objects.all().order_by("-date") [:25], 
                                                       template_name="blog/blog.html")),

                path(r'<int:pk>\d+', DetailView.as_view(model = Post,template_name = 'blog/post.html'))]

и попробовал это тоже:

path(r'(?P<int:pk>\d+', DetailView.as_view(model = Post,template_name = 'blog/post.html'))]

Наряду с этим:

path(r'(?P<int:pk>\d+)', DetailView.as_view(model = Post,template_name = 'blog/post.html'))]

Ошибки сохраняются

  Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
admin/
[name='index']
blog/
blog/ (?P<int:pk>\d+)
The current path, blog/2, didn't match any of these.

Ответы на вопрос(1)

Решение Вопроса

что вы путаетесь между старым механизмом URL на основе регулярных выражений и новым механизмом на основе путей. Если вы используетеpath, вы должны использовать новый специальный синтаксис:

path('<int:pk>', DetailView.as_view(...))

тогда как если вы хотите использовать регулярные выражения, вы должны использовать старыйurl функция (или новый псевдоним,re_path):

url(r'(?P<pk>\d+)', DetailView.as_view(...))
 MissComputing14 дек. 2017 г., 19:06
Есть ли документация по Django или где-то еще по этому поводу? Можете ли вы правильно переписать всю строку в этом предложенном новом синтаксисе, чтобы я мог проверить его? Большое спасибо
 Daniel Roseman14 дек. 2017 г., 23:37
Да. Я далявный код для использования.
 Daniel Roseman14 дек. 2017 г., 19:30
Но это было совсем не то, что я сказал.
 MissComputing14 дек. 2017 г., 19:08
Я попробовал ваше предложение, но ошибка сохраняется> Пожалуйста, смотрите обновление:
 MissComputing14 дек. 2017 г., 23:33
Есть ли шанс, что вы можете быть более конкретным с тем, что поставить в этой строке? : =) Я использую синтаксис на основе пути. Ваше предложение (путь ('<int: pk>', DetailView.as_view (...))) не включает цифры или символ? P - вы говорите, что они не нужны для получения того же эффекта?

Ваш ответ на вопрос