Django错误:在视图模型中使用用户定义的方法

时间:2017-10-29 11:50:44

标签: django django-models django-views

当我尝试在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

1 个答案:

答案 0 :(得分:0)

这里有很多不妥之处。

您已在课程外定义success_url,因此它是一个独立的功能。但是您在LoginView中的类级别引用它,因此它将在导入时调用。但是,由于它是在 LoginView之后定义的,因此在调用它时不会定义它。

你不想做任何这些。首先,使用相同的缩进将其放入类中。其次,在课程级别调用它。根本不要定义{{1}};然后Django会自动调用你的方法来找到值。

(另外,不要在问题标题中使用随机缩写.UDF是什么意思?“用户定义的函数”可能?这不是公认的缩写。)