2016-10-22 2 views
0

Im используя django 1.10 встроенная аутентификация. Я хочу, чтобы login переадресовывался на другую страницу и передавал переменные. Ive сделал мои взгляды, но у меня все время ошибка 404. Я читал о «login-redirect-url», а по умолчанию - учетные записи/профиль. Ive сделал папку внутри моих шаблонов. Правильно ли это? Я храню его в Django/myapp/myapp/templates/accounts/profile/home.htmlпосле входа в систему переадресовать на другую страницу

Ошибка: «Текущий URL-адрес, учетные записи/профиль/home.html не совпадают ни с одним из них».

views.py 

    def home(request): 
     username = None 
     if request.user.is_authenticated: 
      username = request.user.username 
      return redirect('accounts/profile/home.html',{'username': username}) 
     else: 
      return redirect('/accounts/profile') 


myapp/ulrs.py 

    url(r'^accounts/profile/$', views.home, name='home') 

Я изменил settings.py

LOGIN_REDIRECT_URL = '/' 

любые предложения будут welcome.If им делать это неправильно, пожалуйста, предоставить мне пример.

Спасибо.

ответ

0

U не нужно передать имя пользователя в визуализации запроса. Вот пример:

view.py

def profile(request): 
    username = None 
    if request.user.is_staff: 
     return redirect('/admin/') 
    else: 
     return render(request, 'accounts/profile/home.html',{}) 

home.html (хранить его MyApp/MyApp/шаблоны/MyApp/home.html)

Hello user:{{request.user.username}} 
0

Возможно, вы захотите визуализировать accounts/profile/home.html шаблон с контентом {'username': username}.

return render(request, 'accounts/profile/home.html', context={'username': username}) 
+0

эй спасибо за помощь Я пробовал, но все еще имею eror 404. Где я должен сохранить tamplate home ?. спасибо – OverHeat

1

Ответ от Dariusz Niespodziany действителен, но было бы лучше изменить шаблон. Ваше мнение будет выглядеть следующим образом:

def home(request): 
     return redirect('/accounts/profile') 

Тогда в шаблоне (home.html) вы можете сделать такие вещи, как это:

{% if request.user.is_authenticated %} 
    <h1> Hi {{request.user.username}} </h1> 
{% else %} 
    <h1> Hi stranger </h1> 
{% endif %} 
+0

Ive попробовал, может сказать, что я плз, где я должен сохранить свой дом. html Я отредактировал настройки – OverHeat

+0

Ваш home.html должен находиться в приложении в папке 'templates'. если его там нет, создайте его. – 1GDST

0

Попробуйте: -

def user_login(request): 
    context = RequestContext(request) 
    if request.method == 'POST': 
     username = request.POST['login'] 
     password = request.POST['password'] 
     user = authenticate (email=username, password=password) 
     if user is not None: 
      if user.is_active: 
       login(request, user, backend='django.contrib.auth.backends.ModelBackend') 
       redirect_to = settings.LOGIN_REDIRECT_URL 
       return redirect(redirect_to,{your varible }) 
Смежные вопросы