我在覆盖form_valid()
的{{1}}方法时遇到了一些困难。
我有一个CreateView
,用户可以在此注册新患者。表单由ModelForm
处理。我已经覆盖了视图的CreateView
方法,因为我首先需要将用户分配给患者,然后评估患者的详细信息(即表格中的数据)是否满足某些条件。如果不符合标准,则不会保存患者/表格,并且用户会收到错误消息。如果他们符合条件,则将保存患者/表格,并且用户会收到一条成功消息。
表单/视图的此功能正常工作-在下面的测试代码中,我有一个布尔值“ is_eligible”,稍后将替换为适当的条件。当form_valid()
保存模型时,我会收到一条成功消息;当is_eligible == True
保存该模型时,我会收到一条== False
消息。
我的问题是处理成功网址,如果患者不符合条件,则重定向。我希望它返回到我已设置的“仪表盘”,但是每次我得到一个
error
如果任何人都可以提供有关如何进行这项工作的见解/建议,将不胜感激。
我当前的代码:
forms.py
DisallowedRedirect at /dashboard/patients/register
Unsafe redirect URL with protocol 'accounts'
views.py
class PatientRegisterForm(forms.ModelForm):
class Meta:
model = Patient
fields = ['first_name', 'last_name', 'is_eligible']
答案 0 :(得分:0)
首先,我认为您不需要将self.request作为重定向的第一个参数传递。
从docs重定向应该是这样
redirect(to, permanent=False, *args, **kwargs)
但是导致您出错的真正问题是您没有反转URL。您需要做的是:
from django.shorcts import reverse_lazy
..
success_url = reverse_lazy('accounts:dashboard')
..
return redirect(reverse('accounts:dashboard'))