2010-09-13 112 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

    相關問題