当前位置: 首页 > 知识库问答 >
问题:

python-django-local变量在赋值之前引用django错误

龙令
2023-03-14

我一筹莫展,我不知道是什么引起了这个问题。我所做的唯一更改是将loginquiredmixins添加到基于类的视图中。

当我开始设计登录页面时,我似乎弄坏了一些东西,但我不知道具体是什么,这是一个奇怪的想法,CSS或某些HTML会导致什么问题,对吗?

我尝试在if语句之前赋值变量,并将其设置为null,但这似乎不能正常工作,因为它会抛出错误。我使用的是基本的django认证系统。

我得到的确切错误是-分配前引用的局部变量'cource'

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/accounts/login

Django Version: 3.0.7
Python Version: 3.7.3
Installed Applications:
['mainpage.apps.MainpageConfig',
 'quiz.apps.QuizConfig',
 'courses.apps.CoursesConfig',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback (most recent call last):
  File "C:\Users\m\AppData\Local\Continuum\anaconda33\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\m\AppData\Local\Continuum\anaconda33\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\m\AppData\Local\Continuum\anaconda33\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\m\AppData\Local\Continuum\anaconda33\lib\site-packages\django\views\generic\base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\m\AppData\Local\Continuum\anaconda33\lib\site-packages\django\contrib\auth\mixins.py", line 52, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "C:\Users\m\AppData\Local\Continuum\anaconda33\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "H:\Learning Development Platform\learningplatform\courses\views.py", line 26, in get
    lesson_qs = course.lesson.filter(slug=lesson_slug)

Exception Type: AttributeError at /accounts/login
Exception Value: 'NoneType' object has no attribute 'lesson'

这是我的models.py文件:

from django.contrib.auth import decorators
from django.db import models
from django.db.models.fields import SlugField
from django.urls import reverse


class Course(models.Model):
  slug = models.SlugField()
  title = models.CharField(max_length=120)
  description = models.TextField()


  def __str__(self) -> str:
      return self.title


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

  @property
  def lessons(self):
    return self.lesson_set.all().order_by('position') # syntax for foreignkey object


class Lesson(models.Model):
  slug = models.SlugField()
  title = models.CharField(max_length=120)
  course = models.ForeignKey(Course, on_delete=models.SET_NULL, null=True)
  position = models.IntegerField()
  video_url = models.CharField(max_length=200)

  def __str__(self) -> str:
      return self.title


  def get_absolute_url(self):
    return reverse(
      'courses:lesson-detail', 
      kwargs={
        'course_slug': self.course.slug,
        'lesson_slug': self.slug
        }
    )

和我的视图。py:

from django.shortcuts import render
from django.views.generic import ListView, DetailView, View
from .models import Course, Lesson
from django.contrib.auth.mixins import LoginRequiredMixin


class CourseListView(ListView):
    model = Course


class CourseDetailView(DetailView):
    model = Course


class LessonDetailView(LoginRequiredMixin, View):

    def get(self, request, course_slug, lesson_slug, *args, **kwargs):

      course_qs = Course.objects.filter(slug=course_slug)
      if course_qs.exists():
        course = course_qs.first()

      lesson_qs = course.lesson.filter(slug=lesson_slug)
      if lesson_qs.exists():
        lesson = lesson_qs.first()

      context = {
        'object': lesson
      }

      return render(request, 'courses/lesson_detail.html', context)

共有1个答案

洪高阳
2023-03-14

我明白了多少...

在“get”方法中的“lessonDetailView”Class=>

更改此

lesson_qs = course.lesson.filter(slug=lesson_slug)

lesson_qs = course.objects.filter(slug=lesson_slug)

则此错误将被解决:

异常类型:AttributeError at

异常值:“noneType”对象没有属性“leason”

 类似资料:
  • 问题内容: 我正在尝试使用XPATH定位器单击包含文本“ Clean feed crm”的span标签。我得到错误: 完整的错误跟踪: 如果我使用绝对完整的XPATH,则效果很好。相对的XPATH显示错误。 可以使用的完整绝对XPATH是: 相对的XPATH不起作用是: HTML是: 我的方法实现是: 从我的TestCase类,我调用方法: Globals.py是: 我也尝试过使用WebDrive

  • 问题内容: 这个问题已经在这里有了答案 : 从父函数分配给变量:“分配前引用的局部变量” [重复] (5个答案) Python 3:UnboundLocalError:分配前被引用的局部变量[重复] (5个答案) 10个月前关闭。 我收到以下错误: UnboundLocalError:分配前已引用局部变量“ test1”。 错误说那是局部变量,但我认为这个变量是全局变量 那么它是全局的还是局部的,

  • 本文向大家介绍详解PHP变量传值赋值和引用赋值变量销毁,包括了详解PHP变量传值赋值和引用赋值变量销毁的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了PHP变量传值赋值和引用赋值变量销毁的具体代码,供大家参考,具体内容如下 php中,上面的代码,变量是怎么存放的呢? 上面的代码变动下,将变量b赋值给变量a,会发生什么? 问题来了,$a = $b,那么是将变量a的指针指向了变量b指针所

  • 问题内容: 我正在Django中寻找一种简单但推荐的方式,将变量仅存储在内存中。当Apache重新启动或Django开发服务器重新启动时,该变量重置为0。更具体地说,我想计算在每个模型实例(数据库记录)上执行特定操作的次数,但是出于性能原因,我不这样做想要将这些计数存储在数据库中。我不在乎服务器重启后计数是否消失。但是,只要服务器启动,我就希望这些计数在Django Shell和Web界面之间保持

  • 新的打字/暗示/作业方式很酷,但我不知道如何让这么简单的事情起作用: 它抛出一个错误:。到目前为止,我发现的最好但非常丑陋的解决方法是: 请告诉我,具有#1原则的语言有更好的东西来解决这个常见的打字问题

  • 问题内容: 当我使用Django模板渲染器渲染页面时,可以传入包含各种值的字典变量,以使用来在页面中对其进行操作。 有没有办法在Javascript中访问相同的变量(也许使用DOM,我不知道Django如何使变量可访问)?我希望能够基于传入的变量中包含的值使用AJAX查找来查找详细信息。 问题答案: 将直接替换为HTML。查看资料;它不是“变量”或类似的变量。它只是渲染的文本。 话虽如此,你可以将