BotaniQ_Q
@BotaniQ_Q

Не работают динамические url DJango?

Не понимаю, почему не работает, копирую из предыдущего рабочего проэкта
Типичный блог, есть страницы со всеми постами и ссылка на отдельный пост
models:
from django.db import models
from django.utils import timezone

class Note(models.Model):
    title = models.CharField(max_length = 50)
    body = models.TextField()
    likes = models.IntegerField(default=0)
    image = models.ImageField(null=True, blank=True, upload_to="images/")
    is_active = models.BooleanField(default=True)
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()




    def __str__(self):
        return "%s" % self.title



    class Meta:
        verbose_name = 'Запись'
        verbose_name_plural = 'Записи'


urls:
from django.conf.urls import url
from . import views


urlpatterns = [
    
    url(r'^blog/$', views.blog, name='blog'),
 
    url(r'^post/(?P<pk>\d+)/$', views.post, name='blog-post.html'),

    
    
]

views:
from django.shortcuts import render, get_object_or_404
from django.utils import timezone

from .models import *

def blog(request):
	note = Note.objects.filter(published_date__lte=timezone.now()).order_by('published_date')


	return render(request, 'blog.html', {'note': note})



def post(request, pk):
    post = get_object_or_404(Note, pk=pk)
    return render(request, 'blog-post.html', {'post': post})


Главная страница постов :
<!-- Main page content start -->
<div class="container-fluid">
<div class="row">
{% for note in note %}
  <div class="col-4">

    <div class="card">
     <div class="card-body">
      <h3 class="card-title text-center"><a href="{% url 'post' pk=note.pk %}">{{note.title}}</h3>
      <p class="card-text">{{note.body|truncatechars_html:300}}</p>
      <img class="card-img-bottom" src="{{note.image.url}}" alt="Card image cap">
      </div>
     
        <p class="card-text text-center"><small class="text-muted ">Published:{{note.published_date|date:"d.m.Y"}} Likes:{{note.likes}}</small></p>
      
    </div>
  </div>

  {% endfor %}
  </div>
</div>
<!-- Main page content end -->

Страница отдельного поста:
<!-- Main page content start -->

<div class="container-fluid">

  <div class="card text-center">

  
    <div class="card-body">
    {% for note in note %}
     

      <h2 class="card-title">{{note.title}}</h2>
   
   
    <div class="row">
     <div class="col">
    <p class="card-text text-left ">{{note.body}}</p>
    </div>
    <div class="col">
     <img src="{{note.image.url}}" alt="Card image cap">
    </div>

    </div>
      <div class="card-footer text-muted">
        Published:{{note.published_date|date:"d.m.Y"}} Likes:{{note.likes}}
      </div>

    
  {% endfor %}
  </div>
</div>










<!-- Main page content end -->


Когда переходишь на blog ошибка
spoiler

NoReverseMatch at /blog/

Reverse for 'post' not found. 'post' is not a valid view function or pattern name.
и жалуется на запись
<h3 class="card-title text-center"><a href="{% url 'post' pk=note.pk %}">{{note.title}}</h3>


когда переходишь на post/1 или любой другой post/n
страницу отображает, но не выводит никакие объекты модели, чистый шаблон
  • Вопрос задан
  • 839 просмотров
Решения вопроса 1
tema_sun
@tema_sun
url(r'^post/(?P<pk>\d+)/$', views.post, name='blog-post.html'),

должно быть
url(r'^post/(?P<pk>\d+)/$', views.post, name='post'),
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы