2015-01-15 2 views
1

Я хочу сделать обратный @login_required для просмотра моего входа и регистрации. Вот что я хочу сделать (но не работает)Функция Django требует, чтобы пользователь не был зарегистрирован

def amIAuth(request) 
    if request.user.is_authenticated(): 
     return redirect(account) 

def login(request): 
    amIAuth(request) 
    .... 
+0

В каком смысле она не работает (что поведение делает это шоу), и что вы имеете в виду под «обратной of login_required "? –

+0

вы должны иметь возможность написать свою собственную декоративную функцию «@»; найдите, как это сделать, или, надеюсь, кто-то, кто знает, как вам откликнется. –

ответ

5

Образом, у вас это не работает, потому что Логин() ничего с возвращаемым значением не делать.

Правильный способ сделать это декоратора, так же, как @login_required:

def not_loggedin_required(function): 
    def wrap(request, *args, **kwargs): 
     if request.user.is_authenticated(): 
      return redirect(account) # redirect to profile page 
     else: 
      return function(request, *args, **kwargs) 
    return wrap 

@not_loggedin_required 
def login(request): 
    ... 
+0

где мне нужно писать not_loggedin_required? мне нужно что-то импортировать? – TotuDoum

+0

Вы можете либо записать его в том же файле, что и над вашими записями login() и register() (как я показал здесь), или вы можете записать его в отдельный файл (скажем, decorators.py) и импортировать его на top with «from decorators import not_loggedin_required» –

+0

Я написал точно, что вы пишете, и у меня есть доступ к моему окну просмотра, когда я вхожу в журнал – TotuDoum

Смежные вопросы