运行服务器后,我需要读取一个csv文件。它不能在任何视图中完成,因为它需要预加载才能执行所有视图,因此我需要在“ manage.py runserver”之后立即执行。首先有什么文件可以编写需要执行的代码吗?
答案 0 :(得分:3)
在django应用程序按照@ salman-arshad的建议运行时,放置在settings.py
文件中的代码可能会运行,但这不是最好的方法。根据您所运行的环境,这可能是有问题的甚至是危险的。
第一个问题是应用程序启动时代码将运行两次。实际上,django在启动和运行期间会多次使用settings.py
文件。只需将print('Hello world')
放在settings.py
文件的末尾,您将看到它打印了两次。这意味着代码运行了两次。其次,settings.py
文件不能用于运行任意代码。它专用于您的项目设置。第三,如果您尝试从settings.py中的应用程序内部导入任何内容并使用它(例如Model),则会导致错误。因为django的内部应用程序注册表尚未准备好。
因此,运行此类代码的最佳位置是ready
类的AppConfig
钩子。在任何django应用程序中,都有一个apps.py
文件定义了配置类。您可以在其中覆盖ready
函数。像这样启动应用程序时,此功能仅运行一次。假设您有一个名为app_name
class AppNameConfig(AppConfig):
name = 'app_name'
def ready(self):
pass
# write your startup code here you can import application code here
#from app_name.models import MyModel
然后在该应用的__init__.py
文件中放置以下行
default_app_config = 'app_name.apps.AppNameConfig'
现在此代码将在每次启动时运行,而不会出现问题。
答案 1 :(得分:0)
只需将该脚本添加到<?php
if(isset($_POST['submit']))
{
echo $_POST['Privilege_Question_Name'];
$Privilege_Question_Query = (($_POST['Privilege_Question_Name'] == "Privilege_Question_Value") ? 'Y' : 'N');
echo $Privilege_Question_Query;
exit();
}
?>
<form method="post" action="" >
<span class="float-right">Question Settings
<input type="checkbox" name="Privilege_Question_Name" id="Privilege_Question_Id" value="Privilege_Question_Value"/></span>
<br />
<input type="submit" class="btn btn-lg btn-info" name="submit" value="Submit">
</form>
文件中。因为是那些在views.py文件之前执行的文件的settings.py文件