2016-03-24 5 views
1

я использовать модуль аутентификации Джанго, он стиль заблокирован в 192.168.10.100:8080/verif_login и не перенаправляет меня в любом случае,Джанго не перенаправляют мой после входа в систему

это моя страница login.html:

<form action="{% url 'authenticat:verif_login' %}" method="POST"> 
{% csrf_token %} 
    <table border="0" cellpadding="0" cellspacing="0"> 
     <tr> 
      <th>Login</th> 
      <td><input type="text" class="login-inp" name="username" /></td> 
     </tr> 
     <tr> 
      <th>Mot de passe</th> 
      <td><input type="password" name="password" class="login-inp" /></td> 
     </tr> 
     <tr> 
      <th></th> 
      <td><input type="submit" class="submit-login" /></td> 
     </tr> 
    </table> 
</form> 

это мое мнение:

from django.shortcuts import render, redirect 
from django.contrib.auth import authenticate, login 
from django.views.decorators.csrf import csrf_exempt 
from django.contrib.auth.decorators import login_required 

# Create your views here. 

@csrf_exempt 
def log_page(request): 
    return render(request, 'authenticat/login.html', {}) 

@login_required 
def val(request): 
return render(request, 'authenticate/val.html', {}) 


def verif_login(request): 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = authenticate(username=username, password=password) 
    if user is not None: 
    if user.is_active: 
     login(request, user) 
     return redirect('authenticat:val') 
    else: 
     return redirect('authenticat:log_page') 
    else: 
    return redirect('authenticat:log_page') 

это мой authenticat/urls.py:

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'$', views.log_page, name='log_page'), 
    url(r'verif_login$', views.verif_login, name='verif_login'), 
    url(r'val$', views.val , name='val'), 
] 

это мой urls.py:

from django.conf.urls import include, url 
from django.contrib import admin 

urlpatterns = [ 
    # Examples: 
    # url(r'^$', 'proj.views.home', name='home'), 
    # url(r'^blog/', include('blog.urls')), 

    url(r'^admin/', include(admin.site.urls)), 
    url(r'^', include('authenticat.urls', namespace='authenticat')), 
] 
+0

Не попадает ли это на ваш взгляд или ничего не происходит, когда вы нажимаете «Отправить»? – Selcuk

+0

Да, когда я нажимаю submit, он попадает в verif_login, а затем останавливается – assemjhine

+0

Я использую django 1.8 и python 2.7.6 – assemjhine

ответ

0

Может быть, вы можете использовать это:

from django.conf import settings 
from django.shortcuts import redirect 

def my_view(request): 
    if request.user.is_authenticated(): 
     return redirect('%s?next=%s' % (settings.LOGIN_URL, redirect_url)) 
    # ... 

Не самое красивое решение, но оно должно работать.

Кроме того, я не уверен, что ваш запрос if user.is_active необходим, потому что эта проверка также происходит в методе login(). (См here)

Так, чтобы быть уверенным, проверьте ваши, если операторы работают правильно ;-)

0

Ваш шаблон URL для log_page не хватает ^, что означает, что в настоящее время соответствует всем URL, включая verif_login. Оно должно быть:

url(r'^$', views.log_page, name='log_page'), 

Обратите внимание, что Django поставляется с несколькими authentication views, в том числе в целях регистрации. Я рекомендую вам использовать это, а не писать самостоятельно.