2014-12-23 3 views
0

Как обрабатывать это сообщение об ошибке, когда пользователь пытается ввести страницу без входа? На самом деле мне нужно вернуть страницу с ошибкой, чтобы избежать ошибки 404.Ошибка login_required django

Посмотрите, что я пробовал:

views.py

@login_required(login_url='/protected_message/') 
def my_protected_view(request): 
    """A view that can only be accessed by logged-in users""" 
    return render(request, 'bands/protected.html', {'current_user': request.user}) 

urls.py

url(r'^protected/$', 'mysite.bands.views.my_protected_view'), 
    url(r'^protected_message/?next=/protected/$', 
     'django.contrib.auth.views.login'), 

Я прочитал все это, но я не мог "исправить" беспорядок.

login-required-decorator auth

+0

M вы можете написать свой собственный декоратор 'login_required', чтобы переопределить прежний, и добавить перенаправление на функцию декоратора на страницу с ошибкой. –

+1

Для начала вы не помещаете строки запросов в шаблоны URL. Удалите все это '? Next =/protected /' из вашего шаблона. –

ответ

0

Я решил простым способом, я не знаю, является ли это наиболее эффективным, но это сработало.

просмотров

def protected_message(request): 
    return render(request, 'bands/protected_message.html') 

URL

url(r'^accounts/login/$', 'protected_message'), 

шаблон меню

<li><a href="{% url 'admin:index' %}">Login</a></li> 

protected_message.html

{% extends "base.html" %} 

{% block title %} 
    <title>Protected</title> 
{% endblock title %} 

{% block content %} 
    <h1>Access denied</h1> 
{% endblock content %} 
2

Просто позвонить login_required достаточно.

Два метода

  1. В файле settings.py включить это LOGIN_URL = 'login_url'
  2. И еще один метод

    @login_required(login_url='/login_url/') 
    def my_protected_view(request): 
    

сообщение об ошибке

def profile_required(view): 
    @wraps(view) 
    def inner(request, *args, **kwargs) : 
     if request.user.is_authenticated(): 
      return HttpResponseRedirect('/') 
     else: 
      return HttpResponse('Error Message') 
    return inner 
+0

не работает yeat ..... –

+0

Помогите мне пожалуйста. –

+0

Я разрешил да. См. Мой ответ. Благодарю. –

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