简体   繁体   English

Django - 基于 Class 的通用视图 - “没有 URL 重定向到”

[英]Django - Class Based Generic View - “No URL to redirect to”

I'm using the generic CreateView like:我正在使用通用的 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)),
)

With a mymodel_form.html template like:使用 mymodel_form.html 模板,例如:

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

When I submit my form, the new object is created but I get the error当我提交表单时,会创建新的 object 但出现错误

ImproperlyConfigured at...配置不当...

No URL to redirect to.没有要重定向到的 URL。 Either provide a url or define a get_absolute_url method on the Model.提供 url 或在 Model 上定义 get_absolute_url 方法。

How can I specify the url to redirect on success?如何指定 url 成功重定向?

Have you tried passing in success_url ?您是否尝试过传入success_url eg例如

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

or if you want to redirect to a named view:或者如果你想重定向到一个命名视图:

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

you can also try to define get_absolute_url in your models.您也可以尝试在模型中定义get_absolute_url For example例如

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 

Add in views:添加视图:

def form_valid(self, form):

   return self.render_to_response(self.get_context_data(form=form))

views.py/视图.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/ (of your app) urls.py/ (你的应用程序)

from django.urls import path
from . import views

urlpatterns = [
    path('create/', views.createView.as_view(), name='create') 
] 
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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM