urls.py
from django.conf.urls.defaults import patterns, include, url
import myproject.views
urlpatterns = patterns('', (r'^$', myproject.views.home), (r'^login$', apolla.views.login))
views.py
import django.http
import django.template
import django.shortcuts
def home(request):
return django.http.HttpResponse("Welcome home!")
def login(request):
un = request.POST.get('username')
pa = request.POST.get('password')
di = {'unam': un, 'pass': pa}
if un and pa:
di['act'] = "/"
else:
di['act'] = "/login"
return django.shortcuts.render_to_response('login.html', di,
context_instance=django.template.RequestContext(request))
# Why does this code not send me immediately to "/" with
# username and password filled in?
login.html
<html>
<head>
</head>
<body>
<form name="input" method="post" action="{{ act }}">
{% csrf_token %}
Username:
<input type="text" name="username"><br>
Password:
<input type="password" name="password"><br>
<input id="su" type="submit" value="Submit"><br>
</form>
</body>
</html>
開発サーバーを実行し、に移動してlocalhost:8000/login
入力し、送信ボタンを押すと、ログイン機能から期待したとおりに送信されませんusername
。に戻るだけです。しかし、任意のフィールドに入力して2回目に送信すると、に移動します。password
localhost:8000/
views.py
localhost:8000/login
localhost:8000
また、投稿がとフィールドからのデータをキャプチャしたかどうかを確認するために使用print un
しましたが、最初から取得したので、両方とフィールドが入力された最初の送信から誘導されないのはなぜですか?print pa
username
password
localhost:8000/login
username
password