将views.py拆分为模块时发生未定义的变量错误-Django

问题描述 投票:0回答:1

我的views.py中的代码变得越来越大,现在我想将其拆分为模块。但是我对变量有麻烦。问题在于我不应该在哪里声明变量或导入内置模块:在我的自定义模块或views.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,变量和导入。

python django django-views python-module
1个回答
0
投票

如果要在views.py中使用“ find_by_fives.py”,则必须将其导入。请记住-django使用MCV(模型-视图-控制器)模型,因此当您按下按钮时-它会转到URL,然后找到要渲染的视图并根据您调用的函数将其显示在屏幕上。因此,要做到这一点-您必须将其导入“ views.py”中。另外-您应该在实际使用的地方导入“从django.shortcuts import render”-也在“ views.py”中。

© www.soinside.com 2019 - 2024. All rights reserved.