首页 > 解决方案 > 如何使用 ID 整数跟踪 Django 中的请求?

问题描述

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

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

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

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 都变为零。

有没有更有效的方法来取得成功?

标签: pythondjangopost

解决方案


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

或者您可以使用 Django 功能并使用它存储文件。使用 modelRequestFile和 aFileField你可以让你的生活更轻松。通过upload_to您还可以轻松自定义存储文件的位置。请参阅文档

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


推荐阅读