2011-06-07 17 views
37

मैं की तरह सामान्य CreateView उपयोग कर रहा हूँ "कोई URL पर रीडायरेक्ट करने"Django - - कक्षा आधारित जेनेरिक देखें

<form method="post" action=""> 
{% csrf_token %} 
    {{ form.as_p }} 
    <input type="submit" value="Submit" /> 
</form> 

जब मैं मेरी फ़ॉर्म सबमिट करेंगे, नई वस्तु बनाई गई है, लेकिन मैं त्रुटि

पर ImproperlyConfigured ... मिल

पर कोई यूआरएल रीडायरेक्ट नहीं है। या तो एक यूआरएल या प्रदान करें मॉडल पर get_absolute_url विधि को परिभाषित करें।

मैं सफलता पर पुनर्निर्देशित करने के लिए यूआरएल कैसे निर्दिष्ट कर सकता हूं?

उत्तर

64

क्या आपने success_url में गुजरने का प्रयास किया है? जैसे

CreateView.as_view(model=myModel, success_url="/success/") 

या यदि आप एक नामित दृश्य रीडायरेक्ट करना चाहते हैं:

CreateView.as_view(model=myModel, success_url=reverse('success-url')) 
+1

है यही तो मैं भूल गया था। धन्यवाद –

+7

@Glide कोई समस्या नहीं। कुंजी यह थी कि 'Success_url' को 'CreateView' के तहत दस्तावेज नहीं किया गया था, लेकिन' ModelFormMixin' के तहत। Django प्रलेखन कभी-कभी पाने के लिए मुश्किल हो सकता है। – NickAldwin

+0

ठीक है, यह सही है, डॉक्टर वास्तव में अच्छा है लेकिन यहां कई अवधारणाएं हैं ... चीजें खोजने के लिए हमेशा स्पष्ट नहीं है –

13

आप भी अपने मॉडल में get_absolute_url परिभाषित करने की कोशिश कर सकते हैं। उदाहरण के लिए

class Something(models.Model): 
    name = models.CharField(max_length=50, verbose_name='name') 

    class Meta: 
     pass 

    def get_absolute_url(self): 
     return u'/some_url/%d' % self.id 
0

विचारों में जोड़ें:

def form_valid(self, form): 

    return self.render_to_response(self.get_context_data(form=form)) 
संबंधित मुद्दे