亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 POST 和 CBV 中處理 kwargs

在 POST 和 CBV 中處理 kwargs

滄海一幻覺 2021-07-23 19:15:15
在我的最后一個問題中,我在選擇小部件中顯示導入的選項時遇到了麻煩,因為我遺漏了一段(應該是)明顯的代碼。現在,我的 GET(似乎)工作得很好。問題是我在 POST 中做錯了什么。我無法弄清楚應該如何在 POST 中處理 kwargs。如果我在我的 post 方法中包含 kwargsform = Enter_SW_Room(request.POST, **kwargs)我收到錯誤__init__() got multiple values for argument 'data'。環顧堆棧溢出,我發現此錯誤的大部分問題源于在 super 中調用 self (或其他調用錯誤)。例如這個問題/解決方案。如果我嘗試通過不傳遞 kwargs 來解決此問題,則驗證將失敗。(我認為是因為現在適當的字段有一個值,但選擇消失了。)所以,我認為要么我在做一些簡單但又重要的錯誤,要么我需要修改表單驗證。(要么 ???)這是所有代碼(為簡潔起見剪下):''' views.py '''class DockingBay(FormMixin, TemplateView):    form_class = Enter_SW_Room    def get_form_kwargs(self):        kwargs = super().get_form_kwargs()        # snip; create my_avatar_choices, which is more than just a queryset        kwargs['avatar_list'] = my_avatars_choices        return kwargs    def get(self, request, *args, **kwargs):        kwargs = self.get_form_kwargs()        # snip        my_rooms_list = []  # used in the template        form = Enter_SW_Room(**kwargs)        args = {'form': form, 'my_rooms_list': my_rooms_list}        return render(request, self.template_name, args)    def post(self, request, **kwargs):        print(request.POST)        kwargs = self.get_form_kwargs()        form = Enter_SW_Room(request.POST, **kwargs)        if form.is_valid():            # snip - logic to enter the room with correct passcode            return redirect('swdice:swroom', swroom_id)        else:            # snip - error handling will go here'''forms.py'''class Enter_SW_Room(forms.ModelForm):    class Meta:        model = EnterSWroom        widgets = {'default_avatar': forms.Select()}        fields = ('room_number', 'passcode', 'default_avatar')    def __init__(self, *args, **kwargs):        imported_list = kwargs.pop('avatar_list')        super().__init__(*args, **kwargs)         self.fields['default_avatar'].choices = imported_list    default_avatar = forms.ChoiceField(choices=[])
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 263 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號