我开发了一个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都更改为零。
有没有更有效的方法来成功做到这一点?
答案 0 :(得分:1)
要持久存储数据,通常人们使用数据库。例如,您可以创建一个模型RequestMeta
,其中一个IntegerField用于存储计数。也可以为您的名称或类型(email
)添加一个TextField并在每个请求RequestMeta.objects.get_or_create(type='email')
上获取它。
或者您可以使用Django功能并使用它存储文件。使用模型RequestFile
和FileField
,可以使您的生活更加轻松。通过upload_to
,您还可以轻松自定义存储文件的位置。参见http://ceng.tu.edu.iq/ched/images/lectures/chem-lec/st3/c2/Lec23.pdf。
您还可以将计数器存储在附近的文件中,但是由于每个请求都需要进行IO操作,所以它的速度会慢很多,我不建议这样做。