2010-09-13 13 views
10

मैं अपने वर्तमान अजगर/Django परियोजना का एक परीक्षण स्थापना की स्थापना की प्रक्रिया में हूँ के साथ एक और पर टूट जाता है। सब कुछ मेरे देव सर्वर पर बहुत अच्छा काम करता है, लेकिन हमने हाल ही में परियोजना के परीक्षण और अंतिम उत्पादन प्रतियों के लिए एक नया वीएम स्थापित किया है। मैं पाइथन, Django, SqlAlchemy (एक एमएसएसएलएल बैकएंड के साथ), और डब्ल्यूटीएफम्स का उपयोग अपने मुख्य पैकेज के रूप में कर रहा हूं।QuerySelectField, एक सर्वर पर काम करता है एक ही कोड

मैं एक समस्या है जहाँ मेरे परीक्षण सर्वर ठीक से व्यवहार नहीं हो रही है। मैंने व्यक्तिगत रूप से इन पैकेजों को किसी भी सर्वर पर स्थापित नहीं किया है या इंस्टॉल नहीं किया है (जो अब किसी के द्वारा किया गया था), इसलिए मुझे वास्तव में सब कुछ पता नहीं है, लेकिन मुझे पता है कि मेरे टेस्ट सर्वर पर मैं गया हूं मेरे पास सर्वर पर बहुत सारे मुद्दे नहीं हैं। उदाहरण के लिए, जब मैं उन्हें टेम्पलेट्स में उपयोग करता था तो Django उचित तरीके से हल नहीं कर रहा था (यह वापसी मूल्य के बजाय 'बाध्य विधि UserForm.action ... आदि' वापस कर देगा), और अब ऐसा लगता है कि इसमें कई चीजें टाइपकास्टिंग हैं पूर्णांक जब उन्हें कभी घोषित नहीं किया जाता है। पाइथन, 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 

और इसलिए, मैं चुनिंदा क्षेत्र से कोई संगठन चुनें, क आईआईसी पोस्ट 'ऑर्गिड = जेड 55' (चूंकि ऑर्गिड टेबल एक आईडी कॉलम के रूप में 3character स्ट्रिंग का उपयोग करता है), लेकिन रेखा के साथ कहीं यह समस्या का कारण बनता है। हैंडलर जो करता है करने के लिए प्रपत्र अंक:

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 के साथ एक समान फ़ील्ड पर भी होता है, जहां यह किसी कारण से यूयूआईडी को पूर्णांक में बदलने की कोशिश कर रहा है। क्या वहां कोई सेटिंग है जो मुझे याद आ रही है? मैं विधि विधि के आसपास काम करने में सक्षम था, लेकिन यह वास्तव में कुछ नहीं है जिसे मैं अनदेखा कर सकता हूं और इस बिंदु पर काम कर सकता हूं। धन्यवाद! अनुरोध पर उपलब्ध कोई अन्य कोड/जानकारी। इसके अलावा, कई अन्य क्षेत्र हैं, लेकिन मैंने उन्हें अल्पसंख्यक के हित में छोड़ दिया।

+2

और जहां Django वास्तव में खेलता है? –

+2

यदि आप SQLalchemy और WTForms का उपयोग कर रहे हैं तो यह शायद ही कभी Django का उपयोग करने लायक लगता है :) – Anentropic

+2

मुझे लगता है कि अगर आप django को हटाते हैं तो आप कई समस्याओं को खत्म कर सकते हैं (जैसे @AndreBossard मैं इसे नहीं देख सकता हूं) और हल्के वजन का उपयोग करें - फ्लास्क की तरह जो WTForms और SQLAlchemy दोनों का समर्थन करता है। –

उत्तर

1

यह एक तैनाती मुद्दे की तरह लगता है।

  1. प्रणाली विस्तृत अपने कोड के साथ
  2. तैनाती का विस्तार Django निर्देशिका स्थापित करें, रिश्तेदार पथ
  3. virtualenv

मेरे दृष्टिकोण का उपयोग कर का उपयोग कर आयात:

वहाँ मूलतः तीन तरीके Django तैनात करने के लिए कर रहे हैं इन विकल्पों में से एक का चयन करना होगा (शायद 2 या 3, यह भी निर्भर करता है कि आप अपनी अन्य निर्भरताओं को कैसे स्थापित करते हैं जैसे कि स्क्लक्लेमी); फिर जांच करें कि क्या अन्य तैनाती के साथ कोई संघर्ष नहीं है।

+0

+1 –

संबंधित मुद्दे