我有一个包含数据库设置的.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'"
答案 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'"