当我尝试在get_success_url
类中使用LoginView
函数时,为什么会出现此错误:
NameError: name 'get_success_url' is not defined
views.py
class LoginView(SuccessMessageMixin, FormView):
form_class = AuthenticationForm
template_name = 'registration/login.html'
success_url = get_success_url() # url's name to redirect
success_message = 'Welcome back %(username)s!' # A welcome message
def form_valid(self, form):
user = form.get_user()
login(self.request, user)
return super(LoginView, self).form_valid(form)
def get_success_url(self):
# find your next url here
next_url = self.request.POST.get('next', None) # here method should be GET or POST.
if next_url:
return "%s" % (next_url) # you can include some query strings as well
else:
return reverse('home') # what url you wish to return
答案 0 :(得分:0)
这里有很多不妥之处。
您已在课程外定义success_url
,因此它是一个独立的功能。但是您在LoginView中的类级别引用它,因此它将在导入时调用。但是,由于它是在 LoginView之后定义的,因此在调用它时不会定义它。
你不想做任何这些。首先,使用相同的缩进将其放入类中。其次,不在课程级别调用它。根本不要定义{{1}};然后Django会自动调用你的方法来找到值。
(另外,不要在问题标题中使用随机缩写.UDF是什么意思?“用户定义的函数”可能?这不是公认的缩写。)