ブートストラップ ドロップダウン サインイン フォームを使用してユーザーをログインさせようとしています。ユーザー名とパスワードをハードコーディングして問題なく認証できますが、ログイン画面に移動せずにユーザーをログインさせようとしています。これが私のコードです:
テンプレート: アクションを使用して logUserIn URL を呼び出し、フォームがそのビューに投稿できるようにします。
<ul class="nav pull-right">
{% if user.is_authenticated %}
<li><a> Welcome {{ user.first_name }} </a></li>
<li class="divider-vertical"></li>
<li><a href="{% url 'caesarWorkflowApp.views.logUserOut' %}">Log Out</a></li>
<li class="divider-vertical"></li>
{% else %}
<li class="dropdown">
<a class="dropdown-toggle" href="#" data-toggle="dropdown">Sign In <strong class="caret"></strong></a>
<div class="dropdown-menu" style="padding: 15px; padding-bottom: 0px;">
<form action="{% url 'caesarWorkflowApp.views.logUserIn' %}" method="post" accept-charset="UTF-8">
{% csrf_token %}
<input id="user_username" style="margin-bottom: 15px;" type="text" name="username" placeholder="Username" size="30" />
<input id="user_password" style="margin-bottom: 15px;" type="password" name="password" placeholder="Password" size="30" />
<input id="user_remember_me" style="float: left; margin-right: 10px;" type="checkbox" name="user[remember_me]" value="1" />
<label class="string optional" for="user_remember_me"> Remember me</label>
<input class="btn btn-primary" style="clear: left; width: 100%; height: 32px; font-size: 13px;" type="submit" name="commit" value="Sign In" />
</form>
</div>
</li>
{% endif %}
<li class="divider-vertical"></li>
</ul>
URL:
urlpatterns = patterns('',
url(r'^$', 'caesarWorkflowApp.views.home', name='default'),
url(r'^$', 'caesarWorkflowApp.views.logUserIn'),
url(r'^$', 'caesarWorkflowApp.views.logUserOut'),
)
ビュー: 次に、フォームが正常に投稿されているにもかかわらず、コンソールが「入力」を出力することさえないため、機能しないログイン用のこのビューがあります。私は間違って投稿していますか?間違ったアクションを呼び出していますか? テンプレートを作成せずにログイン/ログアウトビューを作成して、ホームページを更新/リダイレクトする方法を知っている人はいますか?
def logUserIn(request):
if request.method == 'POST':
print 'enter'
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
# the password verified for the user
if user.is_active:
login(request, user)
print("User is valid, active and authenticated")
else:
print("The password is valid, but the account has been disabled!")
else:
# the authentication system was unable to verify the username and password
print("The username and password were incorrect.")
response = render_to_response('home.html', {}, context_instance=RequestContext(request))
return response
また、投稿フォームであるため、リロードするかどうかをページに尋ねないようにしたいと思います。これは、誰かがそれに興味を持っている場合の解決策だと思います:ブラウザが更新時にフォームデータを再送信するように要求するのをやめますか?
ありがとうございました!