猿问

Django:reverse_lazy()与通用视图

我有两个通用视图(“创建视图”和“详细信息视图”)。


在我的创建视图中,保存我的窗体后,我想重定向到详细信息视图以显示我新创建的对象。


但是发生了一个错误:Reverse for 'questions.views.DisplayQuestions' not found. 'questions.views.DisplayQuestions' is not a valid view function or pattern name.


如何通过reverse_lazy调用我的详细信息视图?


.视图:


class DisplayQuestions(ListView):

    model = Question

    context_object_name = "all_questions"

    template_name = "questions/home.html"


    def get_queryset(self):

        return Question.objects.order_by(self.kwargs['display_type'])



@method_decorator(login_required, name='dispatch')

class CreateQuestion(CreateView):

    model = Question

    template_name = 'questions/nouveau.html'

    form_class = QuestionForm


    def get_success_url(self):

        return reverse_lazy(DisplayQuestion) # <-- This doesn't work !!!


    def form_valid(self, form):

        self.object = form.save(commit=False)

        self.object.profil = self.request.user.profil

        self.object = form.save()

        return HttpResponseRedirect(self.get_success_url())

.网址:


urlpatterns = [

    url(r'^nouveau$', views.CreateQuestion.as_view()),

    url(r'(?P<display_type>\w+)', views.DisplayQuestions.as_view()),]

.形式:


class QuestionForm(forms.ModelForm):


    class Meta:

        model = Question

        fields = ('question','categorie',)


ITMISS
浏览 171回答 1
1回答

SMILET

您应该将配置中的每个URL命名为:urlpatterns = [&nbsp; &nbsp; url(r'^nouveau$', views.CreateQuestion.as_view(), name='create-question'),&nbsp; &nbsp; url(r'(?P<display_type>\w+)', views.DisplayQuestions.as_view(), name='display-question'),]然后访问它,return reverse_lazy('display-question', kwargs={'display_type': 'your-display-type-value'})
随时随地看视频慕课网APP

相关分类

Python
我要回答