当匿名用户尝试提交表单时,Django会在后台抛出一个错误,因为他们没有登录。为了解决这个问题,可以在表单视图函数中添加一个条件语句,以检查用户是否已经登录。如果没有登录,那么重定向到登录页面,要求用户进行身份验证。
以下是一个示例视图函数,将其中的form_valid方法进行了修改,确保只有已登录的用户才能提交表单。如果是匿名用户,将重定向到登录页面。
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
class FormView(LoginRequiredMixin, View):
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(FormView, self).dispatch(*args, **kwargs)
def form_valid(self, form):
# 处理通过表单提交的数据
return super().form_valid(form)
这是一种常见的实现方式,它通过使用LoginRequiredMixin和method_decorator两个Django内置模块来确保只有登录用户才能访问这个页面。如果您的项目需要更定制化的解决方案,请使用Django用户身份验证系统的其他功能。