2011-06-01 10 views
5

के साथ WTForms 'populate_obj() विधि का उपयोग करना मेरे पास एक टेम्पलेट है जो उपयोगकर्ता को उनकी उपयोगकर्ता जानकारी संपादित करने की अनुमति देता है।फ्लास्क माइक्रो फ्रेमवर्क

<form method="post"> 
    <table> 
     <tr> 
      <td>Username:</td> 
      <td>{{user['username']}}</td> 
     </tr> 
     <tr> 
      <td>New Password:</td> 
      <td> <input type="password" name="password"></td> 
      <td>{% if form.password.errors %} {{form.password.errors}} {% endif %}<td> 
     </tr> 
     <tr> 
      <td>Re-enter Password:</td> 
      <td> <input type="password" name="confirm_password"> 
      </td> 
     </tr> 
     <input type='hidden' name='username' value="{{user['username']}}"> 
     <tr> 
      <td><input type="submit" value="Submit"></td> 
     </tr> 
    </table> 
</form> 

मेरे पास उपयोगकर्ता द्वारा इस तरह के संपादन को संभालने के लिए एक दृश्य कार्य भी है। डेटाबेस जो मैं वर्तमान में उपयोग कर रहा हूं MongoDBMongoKit मॉड्यूल के साथ है। मैं अभी तक दृश्य समारोह में अभी तक ऐसा करने में सक्षम हूं, फिर भी कोई भाग्य नहीं।

def edit(): 
    username = request.args.get('user') 
    user = User.find_one({'username':username}) # Is this a correct way of doing it? 
    form = UserForm(**what should be placed here?**, obj=user) 

    if request.method == 'POST' and form.validate(): 
     form.populate_obj(user) 
     user.save() 
     return 'updated' 
    return render_template('edituser.html', form=form, user=user) 

मैं इस उद्देश्य के लिए populate_obj(obj) पर जा रहा हूं। मुझे इस मामले में ज्यादा मदद नहीं मिली। populate_obj() काम करने के लिए मुझे क्या करना चाहिए?

+0

आपको यह वर्णन करने की ज़रूरत है कि आपको कौन सी त्रुटि मिल रही है, या आप अपने परिणामों से कितने परिणाम प्राप्त कर रहे हैं। –

+0

मैं उम्मीद कर रहा था कि अगर कोई मुझे बताएगा कि मुझे कहां रखा जाना चाहिए, जहां मैंने लिखा है ** ** यहां क्या रखा जाना चाहिए? **। इसके अलावा उस तरीके से प्राप्त उपयोगकर्ता ऑब्जेक्ट को पास करने की अनुमति है या नहीं। – consumer

उत्तर

15

UserForm में request.form होना चाहिए ताकि इसे POST अनुरोध (यदि कोई हो) में उपलब्ध मानों के साथ पॉप्युलेट किया जा सके।

form = UserForm(request.form, obj=user) 
+9

के बजाय कस्टम एसक्यूएलए सामान कर रहे हैं, केवल देशी' डब्ल्यूटीएफम्स 'के साथ। 'फ्लास्क-डब्ल्यूटीएफ' के साथ अतिरिक्त 'request.form' की आवश्यकता नहीं है। – Sean

+5

@ सेन - ट्रू ... जो कि 'फ्लास्क-डब्ल्यूटीएफ' का एक अच्छा विस्तार क्यों है; यह बॉयलरप्लेट काटने में मदद करता है। लेकिन ओपी 'फ्लास्क-डब्ल्यूटीएफ' का उपयोग नहीं कर रहा है, इसलिए बस यह सिफारिश करने की सिफारिश की जाती है कि वह जावास्क्रिप्ट समस्या को हल करने के लिए jQuery का उपयोग करने का सुझाव देने जैसा कुछ है। इसका मतलब यह होगा कि आपकी समस्या आपके लिए हल की गई है - लेकिन समस्या ** ** के लिए हल हो गई है ** ** आप ** अभी भी यह नहीं जानते कि इसे कैसे हल किया जाए। यही कारण है कि मैंने केवल ओपी को फ्लास्क और डब्ल्यूटीएफम्स का उपयोग करके एक नंगे हड्डियों के तरीके में करने के लिए रास्ता दिया है (आप पहले ही बहुत अच्छी तरह से 'फ्लास्क-डब्ल्यूटीएफ' के फायदे बता चुके हैं और मैंने आपको इसके लिए +1 दिया है; -))। –

+0

* nods * किसी भी चीज़ की तुलना में Google कुकीज़ के लिए सुधार अधिक था। उस ने कहा, यदि किसी उपयोगकर्ता को विकास (बनाम रखरखाव) के दौरान कोई समस्या है, तो उन चीज़ों का सुझाव देना आसान है जो जीवन को अब बनाम बनाते हैं। : ~] – Sean

6

क्या आप Flask-WTF का उपयोग कर रहे हैं? यदि हां, तो निम्न नमूना कोड की जाँच: विशेष रूप से

https://github.com/sean-/flask-skeleton/blob/master/skeleton/modules/aaa/views.py#L13

, क्या तुम करोगी:

def edit(): 
    form = UserForm() 
    if form.validate_on_submit(): 
     # Commit your form data 

नीचे लाइन, अगर आप Flask-WTF उपयोग कर रहे हैं, मुझे यकीन है कि आपका प्रश्न क्या है नहीं कर रहा हूँ । यदि आप Flask-WTF का उपयोग नहीं कर रहे हैं, तो Flask-WTF का उपयोग करें।

+0

"नीचे की रेखा, यदि आप फ्लास्क-डब्ल्यूटीएफ का उपयोग कर रहे हैं, तो मुझे यकीन नहीं है कि आपका प्रश्न क्या है। यदि आप फ्लास्क-डब्ल्यूटीएफ का उपयोग नहीं कर रहे हैं, तो फ्लास्क-डब्ल्यूटीएफ का उपयोग करें।" मैं उस अंतिम वाक्य पर अधिक सहमत नहीं हो सकता। यदि आप फ्लास्क-डब्ल्यूटीएफ का उपयोग नहीं करते हैं, तो फ्लास्क-डब्ल्यूटीएफ का उपयोग करें। – Depado

+1

यह देखने में काफी मुश्किल है कि उस उदाहरण में क्या चल रहा है, क्योंकि आप केवल एक सामान्य 'db.session.commit() ':) –

1

कुप्पी के WTF के मामले में, आप

तरह
form = UserForm(obj=user) 

थांट काम करेंगे लिख सकते हैं!

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

  • कोई संबंधित समस्या नहीं^_^