我正在为我当前的Python/Django项目设置一个测试安装。在我的dev服务器上一切都很好,但是我们最近为项目的测试和最终的生产拷贝设置了一个新的VM。我使用Python、Django、SqlAlchemy(带有MSSQL后端)和WTForms作为我的主要包。在
我有一个问题,我的测试服务器运行不正常。我并没有亲自在这两台服务器上设置或安装这些软件包(这是由一个已经离开的人完成的),所以我并不完全了解这一切,但我知道,在我的测试服务器上,我遇到了很多问题,我没有在开发服务器上遇到。例如,当我在模板中使用方法时,Django没有正确解析它们(它将返回'bound method用户窗体.action的。。。而现在它似乎是在把很多东西转换成整数,而这些东西从来没有被声明为整数。所有服务器上的python、django、wtforms、sqlalchemy的版本都是相同的。下面是在dev服务器上运行良好,但在测试服务器上中断的示例代码(以及错误消息):
在表单.py公司名称:
class NewPracticeForm(wtforms.Form):
Name = wtforms.TextField("Practice Name", [wtforms.validators.Required()])
OrgID = safields.QuerySelectField("Organization", pk_attr='OrgID')
action = '/Admin/H/newpractice/'
在脉冲式B.py(sqlalch表定义):
^{pr2}$在视图.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
因此,我从select字段中选择了一个组织,该字段发布了'OrgID=Z55'(因为OrgID表使用一个3字符字符串作为ID列),但是这会导致问题。该窗体指向一个处理程序,该处理程序执行以下操作:
在服务.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转换为整数。有没有我不知道的地方?我能够解决方法的问题,但这并不是我现在可以忽略和解决的问题。谢谢!如有要求,可提供任何其他代码/信息。另外,还有很多其他领域,但为了简洁起见,我省略了这些。在
这似乎是一个部署问题。在
部署django基本上有三种方法:
我的方法是选择其中一个选项(可能是2个或3个,也取决于如何安装其他依赖项,如SqlAlchemy);然后检查是否与其他部署冲突。在
相关问题 更多 >
编程相关推荐