2010-09-13 113 views
10

我正在设置当前Python/Django项目的测试安装过程。在我的开发服务器上一切都很好,但我们最近为测试和项目的最终生产副本设置了一个新的虚拟机。我使用Python,Django,SqlAlchemy(带有MSSQL后端)和WTForms作为我的主包。QuerySelectField在一台服务器上工作,在另一台服务器上打破,使用相同的代码

我遇到问题,我的测试服务器运行不正常。我没有亲自在这两个服务器上设置或安装这些软件包(这是由一个现在已经离开的人完成的),所以我并不真正了解这一切,但我确实知道在我的测试服务器上,我已经我在开发服务器上没有很多问题。例如,当我在模板中使用它们时,Django没有正确地解析方法(它会返回'...方法的UserForm.action',而不是返回值),现在它似乎将类型转换为当它们从未被声明时是整数。 python,django,wtforms和sqlalchemy的版本在所有服务器上都是一样的。这里的示例代码,开发服务器上工作得很好,但(与错误消息一起)打破了测试服务器上:

forms.py:

class NewPracticeForm(wtforms.Form): 
    Name = wtforms.TextField("Practice Name", [wtforms.validators.Required()]) 
    OrgID = safields.QuerySelectField("Organization", pk_attr='OrgID') 
    action = '/Admin/H/newpractice/' 

pulsedb.py(sqlalch表定义):

#engine created here, can include that if necessary but its just a standard engine=create_engine() using pymssql 
Base = declarative_base() 
metadata = Base.metadata 

class Practice(Base): 
    __tablename__ = 'Practice' 
    Name  = Column(String(256) , nullable=False) 
    OrgID  = Column(String(30) , ForeignKey('dbo.Orglist.OrgID') , nullable=False) 

views.py:

def partNewPractice(request): 
    context = Context() 
    frm = forms.NewPracticeForm() 
    frm.OrgID.query = pwdb.session.query(pwdb.OrglistMap) 
    context['form'] = frm 
    #Return the response here using a method which just tacks a couple things on before returning a normal response 

所以,我从选择领域的组织,WH因为OrgID表使用3个字符的字符串作为ID列),但是在该行的某处会引起问题。形式指向一个处理程序,其作用:

services.py

def HandlerAddPractice(request): 
    prac = pdb.Practice() 
    frm = forms.NewPracticeForm(request.POST, obj=prac) 
    frm.OrgID.query = pwdb.session.query(pwdb.OrglistMap) 

而这只要它得到,因为程序抛出一个错误:

invalid literal for int() with base 10: 'Z55' 

我发现这也发生在与QuerySelectField类似的字段上,它出于某种原因试图将UUID转换为整数。有什么地方有我失踪的设置吗?我能够解决方法问题,但在这一点上我不能忽略和解决这个问题。谢谢!任何其他代码/信息可根据要求提供。此外,还有许多其他领域,但为了简洁起见,我将这些领域排除在外。

+2

Django究竟在哪里发挥作用? – 2010-09-14 12:17:07

+2

如果你正在使用SQLalchemy和WTForms,它似乎不值得使用Django :) – Anentropic 2011-10-26 12:37:38

+2

我想你可以消除很多问题,如果你删除django(因为像@AndreBossard我看不到它在哪里使用)并使用轻量级的东西 - 像支持WTForms和SQLAlchemy的Flask。 – 2011-12-19 04:29:26

回答

1

这看起来像是一个部署问题。

基本上有三种方式来部署Django的:

  1. 全系统的安装
  2. 部署扩展Django的目录与您的代码,使用使用的virtualenv

我的做法相对路径

  • 进口会选择其中一个选项(可能是2或3,也取决于你如何安装你的其他依赖如SqlAlchemy);然后检查是否与其他部署没有冲突。

  • +0

    为virtualenv方法+1 – 2012-02-08 12:27:19

    相关问题