Реверс не найден с полем - PullRequest
1 голос
/ 07 января 2020

Я получаю ошибку при использовании get_absolute_url с полем slug. Перепробовал несколько предложений, которые уже существуют в стеке, но не сработали. Может кто-нибудь помочь мне с этим, пожалуйста. Пожалуйста, используйте эту ссылку для отслеживания.

models.py

Коды в моделях.

from django.urls import reverse

class Post(models.Model):
    title = models.CharField(max_length=50)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, on_delete=models.CASCADE)
    draft = models.BooleanField(default=False)
    publish = models.DateTimeField(auto_now=False, auto_now_add=False)
    slug = models.SlugField(unique=True)
    image = models.ImageField(upload_to=upload_location,
            null=True,
            blank=True, 
            width_field="width_field", 
            height_field="hieght_field")
    hieght_field = models.IntegerField(default=0)
    width_field = models.IntegerField(default=0)
    content = models.TextField()
    updates = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)

    def get_absolute_url(self):
        return reverse('post:detail', kwargs={'slug':self.slug})

Views.py

коды в представлениях.

def post_list(request):
    queryset_list = Post.objects.active()
    if request.user.is_staff or request.user.is_superuser:
        queryset_list = Post.objects.all()
    query = request.GET.get('q')
    if query:
        queryset_list = queryset.filter(
            Q(title__icontains=query)
        ).distinct()
    context = {
        'object_list':queryset_list,
        'posts': page,
        "page_request_var": page_request_var,
    }
    return render(request, 'index.html', context)

urls.py

отображение URL.

urlpatterns = [
    path('detail/<slug:slug>/', views.detail, name='detail'),
]

html page

код в индексе. html

{% for obj in object_list %}
<div class="container">
<p class="card-text">{{obj.content|linebreaks|truncatechars:120}}</p>
<a href="{{obj.get_absolute_url}}" class="btn btn-primary">View</a>
<!-- <a href="{% url 'post:detail' pk=obj.id %}"> {{obj.title}} </a> -->
</div>
{% endfor %}

1 Ответ

1 голос
/ 08 января 2020

Произошла ошибка из-за закомментированной строки в индексе. html <a href="{% url 'post:detail' pk=obj.id %}"> {{obj.title}} </a> после удаления этой строчной страницы загружается отлично, и еще одна вещь 'pk' должна быть заменена на slug в подробном представлении для рабочей страницы подробностей. def detail(request,slug): #slug replaced pk

...