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」がありませんというエラーが表示されます