2011-06-07 27 views
37

ben gibi genel CreateView kullanıyorum "Hiç URL yönlendirme yapmak"Django - - Sınıf Tabanlı Jenerik Görünüm

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

zaman benim formu göndermek, yeni nesne oluşturulur ama

de ImproperlyConfigured hatayı ... almak olduğunu

URL'ye yönlendirin. Bir url veya modelini, modelinde bir get_absolute_url yöntemi tanımlayın.

Başarmak için url'yi nasıl belirtebilirim?

cevap

64

success_url'dan geçiş yapmayı denediniz mi? Örneğin.

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

veya adlandırılmış görünüme yönlendirmek istiyorsanız:

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

ben unuttum ne o. Teşekkür ederiz –

+7

@Glide Sorun değil. Anahtar, "success_url", "CreateView" altında değil, "ModelFormMixin" in altında belgelenmemişti. Django belgelerinin bazen geçmesi zor olabilir. – NickAldwin

+0

Tamam, bu doğru, doktor gerçekten çok güzel ama burada çok fazla kavram var ... Her zaman bir şeyler bulmak için belli değil –

13

ayrıca modellerinde get_absolute_url tanımlamak için deneyebilirsiniz. Örneğin

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

görünümlerinde ekleyin:

def form_valid(self, form): 

    return self.render_to_response(self.get_context_data(form=form)) 
İlgili konular