QuerySelectField在一台服务器上工作,在另一台服务器上使用相同的cod中断

2024-10-01 07:35:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我当前的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转换为整数。有没有我不知道的地方?我能够解决方法的问题,但这并不是我现在可以忽略和解决的问题。谢谢!如有要求,可提供任何其他代码/信息。另外,还有很多其他领域,但为了简洁起见,我省略了这些。在


Tags: 项目django方法pydev服务器request整数
1条回答
网友
1楼 · 发布于 2024-10-01 07:35:25

这似乎是一个部署问题。在

部署django基本上有三种方法:

  1. 系统范围安装
  2. 使用代码部署扩展的django目录,使用相对路径导入
  3. 使用virtualenv

我的方法是选择其中一个选项(可能是2个或3个,也取决于如何安装其他依赖项,如SqlAlchemy);然后检查是否与其他部署冲突。在

相关问题 更多 >