2016-06-17 2 views
0

djangocms로 실행되는 사이트가 있고 django-userena의 로그인 및 로그 아웃 기능이 필요합니다. 모든 사용자가 프로필 페이지를 갖기 때문에 쉽게 사용할 수 있습니다. 모든 페이지의 메뉴 디자인은 단순한 로그인 양식이 메뉴의 오른쪽 상단에 있어야한다고 말합니다. 이미 해봤지만 django-userena 로그인이 필요합니다. 내가 어떻게 해?djangocms가있는 모든 페이지에서 django-userena 로그인 및 로그 아웃 양식을 사용하려면 어떻게해야합니까?

내 base.html에 양식을 추가하려고했습니다. 또한이

class LoginFormMiddleware(object): 
     def process_request(self, request): 
     from userena.forms import AuthenticationForm 
     if request.method == 'POST' and request.POST.has_key('base-account') and request.POST['base-account'] == 'Login': 
     form = AuthenticationForm(data=request.POST, prefix="login") 
     if form.is_valid(): 
      from django.contrib.auth import login 
      login(request, form.get_user()) 
     request.method = 'GET' 
    else: 
     form = AuthenticationForm(request, prefix="login") 
    request.login_form = form 

class LogoutFormMiddleware(object): 
def process_request(self, request): 
    if request.method == 'POST' and request.POST.has_key('base-account') and request.POST['base-account'] == 'Logout': 
     from userena.views import signout 
     signout(request) 
     request.method = 'GET' 

base.html

<form class="navbar-form navbar-right login-strip" action="" method="post"> 
         {% csrf_token %} 
         <p id="login"> 
          {{ request.login_form.non_field_errors }} 
          {% for field in request.login_form %} 
           {{ field.errors }} 
           {{ field.label_tag}}: {{ field }} 
          {% endfor %} 
          <input type="submit" name="base-account" value="Login" /> 
         </p> 
        </form> 
        {% else %} 
        <form class="navbar-form navbar-right login-strip" action="" method="post"> 
         {% csrf_token %} 
         <p id="logout">Logged in as <b>{{ request.user.username }}</b>. 
          <input type="submit" name="base-account" value="Logout" /> 
         </p> 
        </form> 
        {% endif %} 

이 나에게 'WSGIRequest'객체가 나는 시도했다 어떤 속성 '수'

답변

0

이없는이 오류를 제공 같은 middleware.py으로 시도 이것에 허벅지 많이. 이제 장고 자습서를 사용하지 않고 있습니다. menu.html에 몇 가지 코드를 넣으면 필요에 따라 로그인하고 로그 아웃 할 수 있습니다. 내 계정에 정상적인 계정으로 로그 아웃 할 수있는 방법이 없습니다.

내 작업은 약이다 : 포함,

URL (R '^ 계정 /'

{% load i18n menu_tags cache %} 
 

 
{% for child in children %} 
 
\t <li class="{% if child.ancestor %}ancestor{% endif %} 
 
\t \t {% if child.selected %} active{% endif %} 
 
\t \t {% if child.children %} dropdown{% endif %}"> 
 
\t \t {% if child.children %} 
 
\t \t \t <a class="dropdown-toggle" data-toggle="dropdown" href="#"> 
 
\t \t \t \t {{ child.get_menu_title }} <span class="caret"></span> 
 
\t \t \t </a> 
 
\t \t \t <ul class="dropdown-menu"> 
 
\t \t \t \t {% show_menu from_level to_level extra_inactive extra_active template "" "" child %} 
 
\t \t \t </ul> 
 
\t \t {% else %} 
 
\t \t \t <a href="{{ child.get_absolute_url }}"><span>{{ child.get_menu_title }}</span></a> 
 
\t \t {% endif %} 
 
\t \t </li> 
 
\t \t {% if class and forloop.last and not forloop.parentloop %}{% endif %} 
 
{% endfor %} 
 
\t \t <li class="User" style="position: absolute; right: 0;"> 
 
\t \t \t <a > 
 
\t \t \t \t {% if user.is_authenticated %} 
 
        <form method="post" action= "accounts/logout/?next={{ request.path }}"> 
 
\t \t \t \t \t \t {% csrf_token %} 
 
\t \t \t \t \t \t <button type="submit" class="cms-btn cms-btn-action"><span class="glyphicon glyphicon-user"></span> {{ request.user.username }}</button> 
 
\t \t \t \t \t </form> 
 
\t \t \t \t {% else %} 
 
        <form action="{% url 'pages-root' %}{% if request.path != logout_url %}?next={{ request.path }}&amp;{{ cms_edit_on }}&amp;cms-toolbar-login=1{% endif %}" 
 
         class="cms-toolbar-item cms-form-login" method="post"> 
 
         {% csrf_token %} 
 
         <label{% if request.toolbar.login_form.username.errors or request.toolbar.login_form.non_field_errors or cms_toolbar_login_error %} class="cms-error"{% endif %}> 
 
          <span>{% trans request.toolbar.login_form.username.label %}</span> 
 
          {{ request.toolbar.login_form.username }} 
 
         </label> 
 
         <label{% if request.toolbar.login_form.password.errors or request.toolbar.login_form.non_field_errors or cms_toolbar_login_error %} class="cms-error"{% endif %}> 
 
          <span>{% trans request.toolbar.login_form.password.label %}</span> 
 
          {{ request.toolbar.login_form.password }} 
 
         </label> 
 
         <label> 
 
          <input class="cms-btn cms-btn-action" type="submit" value="{% trans 'Login' %}"> 
 
         </label> 
 
        </form> 
 
\t \t \t \t {% endif %} 
 
\t \t \t </a> 
 
\t \t </li>

urls.py이 추가

menu.html ('django.contrib.auth.urls')),

0

I en 이 코드로 더 많은 모바일 친구가되었습니다.

<li class="User" style="position: absolute; right: 0;"> 
     <a > 
      {% if user.is_authenticated %} 
       <form method="post" action= "accounts/logout/?next={{ request.path }}"> 
        {% csrf_token %} 
        <p id="logout"><span class="glyphicon glyphicon-user"></span> <b>{{ request.user.username }}</b> 
        <button type="submit" class="cms-btn cms-btn-action"><span class="glyphicon glyphicon-off"></span> {% trans "Logout" %}</button> 
       </form> 
      {% else %} 
       <form method="post" action="{{request.path}}?edit"> 
        {% csrf_token %} 
        <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-user"></span> {% trans "Login" %}</button> 
       </form> 
      {% endif %} 
     </a> 
    </li>