2017-12-18 18 views
0

저는 장고 프로젝트에서 작업하고 있으므로 AbstractUser 모델을 사용하여 기본 장고 사용자 모델을 직원의 모델로 수정했습니다.리디렉션 할 때 장고에서 패턴 이름을 찾을 수 없습니다.

처음 로그인 할 때 EmployeeAdmin - get_urls 방법으로 정의 된 URL의 비밀번호 변경 페이지로 리디렉션해야합니다.

admin.py

class MyAdminSite(AdminSite): 
    login_form = AdminLoginForm 


admin_site = HRMSAdminSite(name='My-admin') 


@admin.register(Employee, site=admin_site) 
class EmployeeAdmin(admin.ModelAdmin): 
    def get_urls(self): 
     return [ 
      path(
       '<id>/password/', 
       self.admin_site.admin_view(self.user_change_password), 
       name='auth_user_password_change', 
      ), 
     ] + super().get_urls() 

    def user_change_password(self, request, id, form_url=''): 
     pass 

을 그리고 내 AdminLoginForm에 나는 사용자의 첫 번째 로그인 확인 : 또한 다음과 같이 내가 기본 AdminSite을 무시했다 기본 로그인 동작을 재정의하는

forms.py 그러나

class AdminLoginForm(AuthenticationForm): 

    def confirm_login_allowed(self, user): 
     # user.last_login is blank if this is first login for this user 
     if not user.last_login: 
      return redirect('auth_user_password_change') 

는 A를 실행 코드 아래에 오류가 발생했습니다 :

'auth_user_password_change'에 대한 반전을 찾을 수 없습니다. 'auth_user_password_change'는 유효한 뷰 기능 또는 패턴 이름이 아닙니다.

django가 EmployeeAdmin의 get_urls() 메소드 내에 정의 된 이름 지정된 URL을 찾을 수없는 이유를 알지 못합니다.

답변

1

모델 관리 클래스에 URL을 추가하기 때문에 반대로하려면 admin 네임 스페이스를 포함시켜야합니다.

return redirect('admin:auth_user_password_change')