Django 无法重定向到最近创建的detailview

Django 无法重定向到最近创建的detailview,django,django-models,django-views,Django,Django Models,Django Views,在尝试重定向到新创建的对话详细信息页面时,我遇到以下错误 NoReverseMatch at/conversations/start/ 对于未找到任何参数的“对话详细信息”,则相反。尝试了1种模式:[“对话/(?P[-a-zA-Z0-9_zu;]+)/$”] 当我手动键入URL时,slug工作得非常好,因此我认为它与StartConversationView上的返回反向逻辑有关 请让我知道任何我可以尝试的事情(我已经尝试了下面的评论) 型号.py class Conversation(model

在尝试重定向到新创建的对话详细信息页面时,我遇到以下错误

NoReverseMatch at/conversations/start/ 对于未找到任何参数的“对话详细信息”,则相反。尝试了1种模式:[“对话/(?P[-a-zA-Z0-9_zu;]+)/$”]

当我手动键入URL时,slug工作得非常好,因此我认为它与
StartConversationView
上的返回反向逻辑有关

请让我知道任何我可以尝试的事情(我已经尝试了下面的评论)

型号.py

class Conversation(models.Model):
    conversation = models.CharField(max_length=60, null=True, blank=False, unique=False)
    detail = models.CharField(max_length=600, null=True, blank=False, unique=False)
    slug = models.SlugField(max_length=80, null=True, blank=True)
    def __str__(self):
        return self.conversation
    def save(self, *args, **kwargs):
        if not self.id:
            self.slug = slugify(self.conversation+'-'+str(datetime.now().strftime("%Y-%m-%d-%H%M")))
            super(Conversation, self).save(*args, **kwargs)

    def get_absolute_url(self):
        #return reverse('conversation_detail', args=[str(self.slug)])
        return reverse('conversation_detail', kwargs={'slug': self.slug})
class StartConversationView(LoginRequiredMixin, View):
    def get(self, request, *args, **kwargs):
        form = StartConversationForm()
        return render(request, 'conversations/start.html', {'form': form})
    def post(self, request, *args, **kwargs):
        form = StartConversationForm(request.POST)
        if form.is_valid():
            new_conversation = form.save(commit=False)            
            new_conversation.starter = request.user            
            new_conversation.save()
            messages.success(request, ('You have successfully started a new conversation.'))       
            return redirect(reverse('conversation_detail'), slug=self.kwargs.get('slug'))
            #return redirect(reverse('conversation_detail'), kwargs = {'slug': self.slug })
            #return redirect('conversation_detail'), self.slug=slug)
            #return HttpResponseRedirect(reverse('conversation_detail', kwargs={'slug': self.slug}))
            #return HttpResponseRedirect(reverse(self.get_absolute_url()))
            #return redirect('login')
        return render(request, 'conversations/start.html' , {'form': form})


class ConversationDetailView(LoginRequiredMixin, DetailView):
    model = Conversation
    slug_field = 'slug'
    template_name = 'conversations/conversation_detail.html'
urlpatterns = [
    path('start_circle/',StartCircleView.as_view(), name='start_circle'),
    path('start/',StartConversationView.as_view(), name='start_conversation'),
    path('<slug:slug>/',ConversationDetailView.as_view(), name='conversation_detail'),
]
视图.py

class Conversation(models.Model):
    conversation = models.CharField(max_length=60, null=True, blank=False, unique=False)
    detail = models.CharField(max_length=600, null=True, blank=False, unique=False)
    slug = models.SlugField(max_length=80, null=True, blank=True)
    def __str__(self):
        return self.conversation
    def save(self, *args, **kwargs):
        if not self.id:
            self.slug = slugify(self.conversation+'-'+str(datetime.now().strftime("%Y-%m-%d-%H%M")))
            super(Conversation, self).save(*args, **kwargs)

    def get_absolute_url(self):
        #return reverse('conversation_detail', args=[str(self.slug)])
        return reverse('conversation_detail', kwargs={'slug': self.slug})
class StartConversationView(LoginRequiredMixin, View):
    def get(self, request, *args, **kwargs):
        form = StartConversationForm()
        return render(request, 'conversations/start.html', {'form': form})
    def post(self, request, *args, **kwargs):
        form = StartConversationForm(request.POST)
        if form.is_valid():
            new_conversation = form.save(commit=False)            
            new_conversation.starter = request.user            
            new_conversation.save()
            messages.success(request, ('You have successfully started a new conversation.'))       
            return redirect(reverse('conversation_detail'), slug=self.kwargs.get('slug'))
            #return redirect(reverse('conversation_detail'), kwargs = {'slug': self.slug })
            #return redirect('conversation_detail'), self.slug=slug)
            #return HttpResponseRedirect(reverse('conversation_detail', kwargs={'slug': self.slug}))
            #return HttpResponseRedirect(reverse(self.get_absolute_url()))
            #return redirect('login')
        return render(request, 'conversations/start.html' , {'form': form})


class ConversationDetailView(LoginRequiredMixin, DetailView):
    model = Conversation
    slug_field = 'slug'
    template_name = 'conversations/conversation_detail.html'
urlpatterns = [
    path('start_circle/',StartCircleView.as_view(), name='start_circle'),
    path('start/',StartConversationView.as_view(), name='start_conversation'),
    path('<slug:slug>/',ConversationDetailView.as_view(), name='conversation_detail'),
]
url.py

class Conversation(models.Model):
    conversation = models.CharField(max_length=60, null=True, blank=False, unique=False)
    detail = models.CharField(max_length=600, null=True, blank=False, unique=False)
    slug = models.SlugField(max_length=80, null=True, blank=True)
    def __str__(self):
        return self.conversation
    def save(self, *args, **kwargs):
        if not self.id:
            self.slug = slugify(self.conversation+'-'+str(datetime.now().strftime("%Y-%m-%d-%H%M")))
            super(Conversation, self).save(*args, **kwargs)

    def get_absolute_url(self):
        #return reverse('conversation_detail', args=[str(self.slug)])
        return reverse('conversation_detail', kwargs={'slug': self.slug})
class StartConversationView(LoginRequiredMixin, View):
    def get(self, request, *args, **kwargs):
        form = StartConversationForm()
        return render(request, 'conversations/start.html', {'form': form})
    def post(self, request, *args, **kwargs):
        form = StartConversationForm(request.POST)
        if form.is_valid():
            new_conversation = form.save(commit=False)            
            new_conversation.starter = request.user            
            new_conversation.save()
            messages.success(request, ('You have successfully started a new conversation.'))       
            return redirect(reverse('conversation_detail'), slug=self.kwargs.get('slug'))
            #return redirect(reverse('conversation_detail'), kwargs = {'slug': self.slug })
            #return redirect('conversation_detail'), self.slug=slug)
            #return HttpResponseRedirect(reverse('conversation_detail', kwargs={'slug': self.slug}))
            #return HttpResponseRedirect(reverse(self.get_absolute_url()))
            #return redirect('login')
        return render(request, 'conversations/start.html' , {'form': form})


class ConversationDetailView(LoginRequiredMixin, DetailView):
    model = Conversation
    slug_field = 'slug'
    template_name = 'conversations/conversation_detail.html'
urlpatterns = [
    path('start_circle/',StartCircleView.as_view(), name='start_circle'),
    path('start/',StartConversationView.as_view(), name='start_conversation'),
    path('<slug:slug>/',ConversationDetailView.as_view(), name='conversation_detail'),
]
urlpatterns=[
路径('start_circle/',StartCircleView.as_view(),name='start_circle'),
路径('start/',StartConversationView.as_view(),name='start_conversation'),
路径(“/”,ConversationDetailView.as_view(),name='conversation_detail'),
]
试试看

class StartConversationView(View):

    ...

    def post(self, request, *args, **kwargs):
        form = StartConversationForm(request.POST)
        if form.is_valid():
            new_conversation = form.save(commit=False)            
            new_conversation.starter = request.user            
            new_conversation.save()
            messages.success(request, ('You have successfully started a new conversation.'))       
           
            return redirect(reverse('conversation_detail', kwargs={'slug':new_conversation.slug}))

             
        return render(request, 'detail.html' , {'form': form})

成功了。非常感谢,先生。我唯一需要修改的是返回render(请求,'conversation_detail',{'form':form})