0

djangocms で実行しているサイトがあり、django-userena のログインおよびログアウト機能が必要です。すべてのユーザーにもプロファイル ページがあるため、これを使用するのは簡単です。すべてのページのメニューのデザインでは、シンプルなログイン フォームをメニューの右上隅に配置する必要があると記載されています。私はすでにそれを行っていますが、それを操作するには django-userena ログインが必要です。どうすればいいですか?

base.html にフォームを追加しようとしました。また、このような middleware.py で試してみました

    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」オブジェクトに属性「get」がありませんというエラーが表示されます

4

2 に答える 2