UnboundLocalError в / Movies / локальной переменной 'pichuur', на которую ссылаются до назначения - PullRequest
0 голосов
/ 27 сентября 2018

ОШИБКА MSG:

enter image description here

Веб-страница выдает другое представление, когда я пытаюсь создать другое представление, и вижу содержимое, сохраненное вDB.

В models.py :

from django.db import models

# Create your models here.


class pichuur(models.Model):

    def __str__(self):
        return self.name + '-' + self.language


    name=models.CharField(max_length=100)
    language= models.CharField(max_length=100)
    Genre= models.CharField(max_length=100)
    Year= models.CharField
    Category= models.CharField(max_length=100)
    Cast= models.CharField(max_length=500)`

    from django.shortcuts import render

в views.py:

# Create your views here.

from django.http import HttpResponse

from .models import pichuur

def index(request):

    Sab_movies = pichuur.objects.all()
    html=''
    for pichuur in Sab_movies:
      url= '/Movies/' + str(pichuur.id) + '/'
      html+= '<a href= "'+ url + '">' + '</a><br>'

    return HttpResponse("<h> Welcome to Movies </h>")

    def detail(request, pichuur_id):
        return HttpResponse("<h2> Details for Movie Id:" + str(pichuur_id) + "</h2>")

1 Ответ

0 голосов
/ 27 сентября 2018

Вы используете pichuur в качестве локальной переменной в цикле for:

for pichuur in Sab_movies:

Это означает, что Python ожидает, что сможет назначить его, и до того, какfor цикл начинается, имя unbound , ему не присвоено значение.

То, что это имя также имя вашей модели не имеет значениябольшеТаким образом, оператор Sab_movies = pichuur.objects.all() не выполняется, поскольку pichuur еще не установлен циклом for.

Решение состоит в том, чтобы использовать различных имен для вашей модели и цели циклапеременная.Не используйте названия моделей в качестве имен локальных переменных.И в руководстве по стилю Python классы (такие как модели Django) должны использовать имена CamelCase, чтобы точно избежать ошибок, подобных этим.

Поэтому здесь, в частности, я бы переименовал модель, чтобы использовать прописные буквы P:

class Pichuur(models.Model):

, затем в views.py используйте это новое имя:

from .models import Pichuur

и

Sab_movies = Pichuur.objects.all()
...