老师点击保存后报错
来源: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回答
同学你好:
该错误为匿名用户错误。不知道同学使用此功能时,用户是否处于登录的状态。该功能需要登录用户名密码才可以操作。同学可以重启服务并清空浏览器缓存后,重新登录用户后再进行操作。
如果我解决了同学的问题,请采纳!学习愉快^_^。
相似问题