为了账号安全,请及时绑定邮箱和手机立即绑定

单向删除删除Django Channels线程

单向删除删除Django Channels线程

撒科打诨 2021-12-09 15:49:55
我试图让用户从他们的收件箱中删除与另一个用户的线程。我已经关注了 Django Docs,DeleteView尽管这可能是完全错误的。views.pyclass InboxView(LoginRequiredMixin, ListView):    template_name = 'chat/inbox.html'    context_object_name = 'threads'    def get_queryset(self):        return Thread.objects.by_user(self.request.user).order_by('-timestamp')        # by_user(self.request.user)class ThreadView(LoginRequiredMixin, FormMixin, DetailView):    template_name = 'chat/thread.html'    form_class = ComposeForm    success_url = '#'    def get_queryset(self):        return Thread.objects.by_user(self.request.user)    def get_object(self):        other_username  = self.kwargs.get("username")        obj, created    = Thread.objects.get_or_new(self.request.user, other_username)        if obj == None:            raise Http404        return obj    def get_context_data(self, **kwargs):        context = super().get_context_data(**kwargs)        context['form'] = self.get_form()        return context    def post(self, request, *args, **kwargs):        if not request.user.is_authenticated:            return HttpResponseForbidden()        self.object = self.get_object()        form = self.get_form()        if form.is_valid():            return self.form_valid(form)        else:            return self.form_invalid(form)    def form_valid(self, form):        thread = self.get_object()        user = self.request.user        message = form.cleaned_data.get("message")        ChatMessage.objects.create(user=user, thread=thread, message=message)        return super().form_valid(form)class ThreadDeleteView(DeleteView):    model = Thread    success_url = reverse_lazy('inbox')带有删除按钮的html线程页面<!-- Delete Thread -->          <form action="{% url 'chat:thread_delete' user.username %}" method='post'>  {% csrf_token %}            <button type='submit' class='btn btn-light'>              <i class="fas fa-trash-alt" style="color:royalblue"></i>            </button>          </form>urls.py
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

我认为这里的问题是你的get_or_new()方法中有一个没有返回元组的 return 语句:

if username == other_username:
    return None

这会导致视图崩溃,因为它期望将元组解包为两个变量。返回一个元组应该解决:

if username == other_username:
    return None, None


查看完整回答
反对 回复 2021-12-09
  • 1 回答
  • 0 关注
  • 405 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号