【发布时间】:2021-07-25 10:52:23
【问题描述】:
我在尝试重定向到我新创建的对话详细信息页面时收到以下错误。
NoReverseMatch 在 /conversations/start/ 未找到任何参数的“conversation_detail”反向。尝试了 1 种模式:['conversations/(?P[-a-zA-Z0-9_]+)/$']
当我手动输入 URL 时,slug 工作得很好,所以我认为它与 StartConversationView 上的返回反向逻辑有关。
请让我知道我可以尝试的其他任何事情(我已经尝试了下面评论的内容)。
models.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})
views.py
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'
urls.py
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'),
]
【问题讨论】:
标签: django django-models django-views