如何在Django中使用ID整数跟踪请求?

时间:2019-01-28 10:37:28

标签: python django post

我开发了一个Django应用程序,其中,当用户进行POST时,它将在服务器中创建一些.txt文件。 在请求中创建的所有txt文件的名称均具有相同的ID整数,以便区分请求。 例如:

with the first POST --> 1_file.txt
with the second POST --> 2_file.txt 

要成功,服务器代码中创建txt文件的每个函数(views.py或utils.py)都具有function_name.counter变量,以跟踪每个函数的运行时间(通过用户的POST): / p>

def getEmail(email):
    getEmail.counter += 1
    with open(BASE_DIR + str(getEmail.counter) + "_Email.txt", "w") as f:
        f.write('%s' % email)

getEmail.counter = 0

但是这种方式很容易出错,并且随着Apache的重新启动,所有.counter都更改为零。

有没有更有效的方法来成功做到这一点?

1 个答案:

答案 0 :(得分:1)

要持久存储数据,通常人们使用数据库。例如,您可以创建一个模型RequestMeta,其中一个IntegerField用于存储计数。也可以为您的名称或类型(email)添加一个TextField并在每个请求RequestMeta.objects.get_or_create(type='email')上获取它。

或者您可以使用Django功能并使用它存储文件。使用模型RequestFileFileField,可以使您的生活更加轻松。通过upload_to,您还可以轻松自定义存储文件的位置。参见http://ceng.tu.edu.iq/ched/images/lectures/chem-lec/st3/c2/Lec23.pdf

您还可以将计数器存储在附近的文件中,但是由于每个请求都需要进行IO操作,所以它的速度会慢很多,我不建议这样做。