从其他py文件导入变量

时间:2013-08-20 20:04:08

标签: django

我有一个包含数据库设置的.py文件(称之为connection.py)。我试图将我的connection.py中包含的变量导入到views.py中。但是,变量未导入。

在我的views.py中,我有:

from connection import *

def location_where_connection_variables_needed(request, some_id):

 conn = psycopg2.connect(conn_string)
 cursor = conn.cursor()

然后我在views.py脚本中使用connection.py中的变量。但是变量没有被导入到我的views.py中。我将connection.py放在主文件夹中(即,connection.py与我的应用程序的文件夹位于同一文件夹中)。这是放置它的正确位置吗?或者我在做其他根本错误的事情?

编辑: 我的意思是没有被导入: 我没有收到任何错误,但由于views.py中的代码没有执行,因此没有导入变量。如果我在views.py中手动添加连接变量,一切正常。

Connection.py

conn_string = "host='localhost' dbname='test' user='postgres' password='pwd'"

2 个答案:

答案 0 :(得分:2)

对于常量值,我通常会将这些值放入名为constants.py的文件中,并在所有大写字母中指定这些值,这是一种Python约定。所以,我会用“constants.py”替换“connection.py”:

# constants.py
CONN_STRING = "host='localhost' dbname='test' user='postgres' password='pwd'"


# views.py
from constants import CONN_STRING

def location_where_connection_variables_needed(request, some_id):
    conn = psycopg2.connect(CONN_STRING)
    cursor = conn.cursor()

此外,请务必清除manage.py可能无法清除的任何.pyc文件。这有时会导致事情无法按预期发挥作用。您也可能远离import *,因为它不是隐含的(您无法看到您正在导入的内容),并且很容易遇到命名冲突。

答案 1 :(得分:0)

您可以尝试使用全局变量而不是本地变量。将其用作

global conn_string = "host='localhost' dbname='test' user='postgres' password='pwd'"