在视图内部定义函数

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

我正在尝试创建工作委员会网站,并在以表格形式输入邮政编码后,将该邮政编码传递到search_results视图(作为zip_code)。在这种情况下,我需要:

  1. 获取周围的邮政编码(具有一定的英里半径)
  2. 在数据库中获取与这些邮政编码匹配的对象。

我已经完成了第一步,还没有实现第二步(实际代码不是很重要的问题:]

from uszipcode import Zipcode, SearchEngine
def search_results(request, zip_code):
    zip_codes = []
    search = SearchEngine(simple_zipcode=True) # create SearchEngine object
    zip_code = search.by_zipcode(zip_code) #create Zipcode object?
    latitude = zip_code.lat
    longitude = zip_code.lng
    result = search.by_coordinates(latitude, longitude, radius = 5, returns = 5)
    for item in result:
        zip_codes.append(item.zipcode)

   # code that will return matching objects

我的问题是,您可以在Django视图中定义函数,例如:

def search_results(request, zip_code):
  zip_codes = getSurroundingZipCodes(zip_code)
  results = getJobsInArea(zip_codes)
  return render(request, 'results.html', {'results: results})

  def getSurroundingZipCodes(zip_code):
      # logic for this function

  def getJobsInArea(zip_codes):
      # logic for this function

这是我在任何教程中都没有看到的东西,所以我觉得答案是否定的,但是我不确定为什么吗?

django django-views
1个回答
1
投票

是的,你可以做到。 django视图在这里是一个函数。您可以在函数内部定义函数。这就是装饰器在python中的工作方式。但为什么我们不能在单独的模块中定义函数并将其导入上方?就像在文件中一样

utils.py

def getSurroundingZipCodes(zip_code):
      # logic for this function

def getJobsInArea(zip_codes):
      # logic for this function

并简单地导入

from utils import getSurroundingZipCodes,getJobsInArea这样他们将是可恢复的

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