将 views.py 拆分为模块时出现未定义的变量错误

我的代码一天比一天大,现在我想把它分成模块。但我在变量方面遇到了麻烦。问题在于,我不应该在哪里声明变量,或者导入内置模块:在我的自定义模块中,或者.这是我的代码:views.pyviews.py


views.py:


@login_required(login_url='sign_in')

def result(request):

    find_by_fives()

    context = {

        'last_uploaded': last_uploaded,

        'words_count': words_count,

        'characters_count': characters_count

    }

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

find_by_fives.py(是我的自定义模块):


import glob 

from .models import OriginalDocument

from django.shortcuts import render


def find_by_fives():

    last_uploaded = OriginalDocument.objects.latest('id')


    original = open(str(last_uploaded.document), 'r')

    original_words = original.read().lower().split()

    words_count = len(original_words)


    open_original = open(str(last_uploaded.document), "r")

    read_original = open_original.read()

    characters_count = len(read_original)


    path = 'static/other_documents/doc*.txt'

    files = glob.glob(path)                       


错误:NameError: name 'last_uploaded' is not defined


注意:这不是我的全部观点,我只想知道我应该在哪里声明,变量和导入。context


aluckdog
浏览 120回答 1
1回答

30秒到达战场

好的,我看到了 - “find_by_fives.py”是一个功能,对吧?因此,您在其中声明的变量仅存在于其中。因此,当您从 views.py 调用此函数时 - 它们被声明,然后,当函数结束时,它们将被删除。如果要在 views.py 中使用它们 - 您应该返回它们并在那里分配一个变量,然后将它们传递给上下文:@login_required(login_url='sign_in')def result(request):   last_uploaded, words_count, characters_count = find_by_fives()   context = {       'last_uploaded': last_uploaded,       'words_count': words_count,       'characters_count': characters_count   }   return render(request, 'result.html', context)def find_by_fives():   last_uploaded = OriginalDocument.objects.latest('id')   original = open(str(last_uploaded.document), 'r')   original_words = original.read().lower().split()   words_count = len(original_words)   open_original = open(str(last_uploaded.document), "r")   read_original = open_original.read()   characters_count = len(read_original)   path = 'static/other_documents/doc*.txt'   files = glob.glob(path)    return last_uploaded, words_count, characters_count 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python