53

私は次のような一般的なCreateViewを使用しています。

#urls.py

from django.conf.urls.defaults import *
from django.views.generic import CreateView
from content.models import myModel

urlpatterns = patterns('myApp.views',
    (r'myCreate/$', CreateView.as_view(model=myModel)),
)

次のようなmymodel_form.htmlテンプレートを使用します。

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

フォームを送信すると、新しいオブジェクトが作成されますが、エラーが発生します

不適切に構成された...

リダイレクト先のURLがありません。URLを指定するか、モデルでget_absolute_urlメソッドを定義します。

成功時にリダイレクトするURLを指定するにはどうすればよいですか?

4

5 に答える 5

78

渡してみましたsuccess_urlか?例えば

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

または、名前付きビューにリダイレクトする場合:

CreateView.as_view(model=myModel, success_url=reverse('success-url'))
于 2011-06-07T14:11:21.900 に答える
22

モデルで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 
于 2012-02-09T21:06:36.320 に答える
1

ビューに追加:

def form_valid(self, form):

   return self.render_to_response(self.get_context_data(form=form))
于 2013-07-10T07:34:40.883 に答える
0

views.py/

from django.views.generic import CreateView
from .models import myModel

class createView(CreateView):
    model = myModel
    fields = ['your fields', ...'']

    def get_success_url(self):
        return reverse('some_url')

urls.py/ (アプリの)

from django.urls import path
from . import views

urlpatterns = [
    path('create/', views.createView.as_view(), name='create') 
] 
于 2019-10-13T01:32:27.210 に答える
-1
class PostDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
    model = Post
    success_url = '/'
    def test_func(self):
        post = self.get_object()
        if self.request.user == post.author:
            return True
        return False
于 2020-07-15T23:35:58.673 に答える