UnboundLocalError в / detail / 1 / локальной переменной 'post', на которую ссылается перед присваиванием - PullRequest
0 голосов
/ 15 мая 2019

Я получаю следующую ошибку в Django:

UnboundLocalError at /detail/1/
local variable 'post' referenced before assignment
Request Method: GET
Request URL:    http://127.0.0.1:8000/detail/1/
Django Version: 2.2.1

Вот где генерируется ошибка:

from django.shortcuts import render, get_object_or_404
from .models import post

def home (request) :
    context = {
        'titel': 'homepage',
        'posts': post.objects.all()
    }
    return render (request, 'site.html', context) 


def post_detail(request, post_id):
    post = get_object_or_404(post,id=post_id)
    context = {
        'title': post,
        'post': post,
    }

    return render(request, 'details.html', context)

Может кто-нибудь объяснить мне об этой ошибке и как ее решить

Ответы [ 3 ]

1 голос
/ 15 мая 2019

Название вашей модели post. И вы используете post в качестве переменной в функции post_detail. Вот почему вы получаете ошибку. Измените имя вашей переменной с post на другую переменную. Я думаю, что это будет работать.

0 голосов
/ 15 мая 2019

проблема устранена изменением названия модели с «пост» на «пост»


class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField(max_length=300)
    post_date = models.DateTimeField(default=timezone.now)
    post_update = models.DateTimeField(auto_now=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ('-post_date', )   
0 голосов
/ 15 мая 2019

Внутри функции post_detail вы использовали post в качестве имени переменной и названия модели.Я думаю, что ваша модель называется Пост , а не пост. Измените название модели в верхнем регистре.

Я думаю, что это будет работать:

from django.shortcuts import render, get_object_or_404
from .models import Post

def home (request) :
  context = {
    'titel': 'homepage',
    'posts': post.objects.all()
  }
  return render (request, 'site.html', context) 


def post_detail(request, post_id):
 post = get_object_or_404(Post,id=post_id)
 context = {
    'title': post,
    'post': post,
 }

 return render(request, 'details.html', context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...