老师点击保存后报错

来源:6-11 完善地址编辑

xiaoyuan1

2020-01-31 15:02:13

Traceback (most recent call last):

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\core\handlers\exception.py", line 41, in inner

    response = get_response(request)

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response

    response = self.process_exception_by_middleware(e, request)

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response

    response = wrapped_callback(request, *callback_args, **callback_kwargs)

  File "F:\Code\py_learn\django_mall\accounts\views.py", line 89, in address_edit

    if form.is_valid():

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\forms\forms.py", line 183, in is_valid

    return self.is_bound and not self.errors

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\forms\forms.py", line 175, in errors

    self.full_clean()

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\forms\forms.py", line 385, in full_clean

    self._clean_form()

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\forms\forms.py", line 412, in _clean_form

    cleaned_data = self.clean()

  File "F:\Code\py_learn\django_mall\accounts\forms.py", line 150, in clean

    addr_list = UserAddress.objects.filter(is_valid=True, user=self.request.user)

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\db\models\manager.py", line 85, in manager_method

    return getattr(self.get_queryset(), name)(*args, **kwargs)

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\db\models\query.py", line 787, in filter

    return self._filter_or_exclude(False, *args, **kwargs)

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\db\models\query.py", line 805, in _filter_or_exclude

    clone.query.add_q(Q(*args, **kwargs))

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\db\models\sql\query.py", line 1250, in add_q

    clause, _ = self._add_q(q_object, self.used_aliases)

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\db\models\sql\query.py", line 1276, in _add_q

    allow_joins=allow_joins, split_subq=split_subq,

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\db\models\sql\query.py", line 1179, in build_filter

    self.check_related_objects(field, value, opts)

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\db\models\sql\query.py", line 1078, in check_related_objects

    for v in value:

  File "C:\envs\py3.7-FwvP4-65\lib\site-packages\django\utils\functional.py", line 239, in inner

    return func(self._wrapped, *args)

TypeError: 'AnonymousUser' object is not iterable


def clean(self):
   cleaned_data = super().clean()
   # 查询当前登录用户的地址数据
   addr_list = UserAddress.objects.filter(is_valid=True, user=self.request.user)
   if addr_list.count() >= 20:
       raise forms.ValidationError('最多只能添加20个地址')
   return cleaned_data

# 保存方法需要重写一下,因为省市区重新写到region中了
def save(self, commit=True):
   obj = super().save(commit=False)
   region = self.cleaned_data['region']
   # 省市区的数据
   (province, city, area) = region.split(' ')
   obj.province = province
   obj.city = city
   obj.area = area
   obj.user = self.request.user

   # 修改的时候,如果已经有了默认地址,当前页勾选了默认地址选项
   # 需要把之前的地址都改为非默认的地址
   if self.cleaned_data['is_default']:
       pass
   obj.save()



def address_edit(request, pk):
   """地址新增或者编辑"""
   user = request.user
   if request.method == 'POST':
       form = UserAddressForm(request=request, data=request.POST)
       if form.is_valid():
           form.save()
           return redirect('accounts:address_list')
   else:
       form = UserAddressForm(request=request)
   return render(request, 'address_edit.html', {
       'form': form
   })

这是代码,找了好久,也看了问答区,实在是找不到原因

写回答

1回答

好帮手乔木

2020-02-01

同学你好:

该错误为匿名用户错误。不知道同学使用此功能时,用户是否处于登录的状态。该功能需要登录用户名密码才可以操作。同学可以重启服务并清空浏览器缓存后,重新登录用户后再进行操作。

如果我解决了同学的问题,请采纳!学习愉快^_^。


0

0 学习 · 3562 问题

查看课程