アプリ内のユーザーが既にログインしていて、「../login/」に直接アクセスしようとした場合、ユーザーをユーザー ページにリダイレクトしたいと考えていました。私はこの答えを見つけました:
Django:ログインページからログインしているユーザーをリダイレクトします
ログインフィールドの下にある「登録」リンクをクリックするまでは、うまく機能します。理由はわかりませんが、ヒットすると再びログインページにリダイレクトされますが、変更されるのはURLだけで、何らかの理由で「http://localhost:8000/users/login/?next 」になります=/users/register/ "で、登録ページに移動しません。
次のように、ログイン テンプレートで別の URL を設定すると、「次の」変数が変更されるのはなぜですか。
{% extends "base.html" %}
{% block title %}User Login{% endblock %}
{% block head %}User Login{% endblock %}
{% block content %}
{% if form.errors %}
<p>User name or password is incorrect.</p>
{% endif %}
<form method="post" action="{% url login %}">
{% csrf_token %}
<p><label for="id_username">Username:</label>
{{ form.username }}</p>
<p><label for="id_password">Password:</label>
{{ form.password }}</p>
<input type="submit" value="Login" />
<input type="hidden" name="next" value="users/"/>
</form>
<li><a href="/users/register/">Register</a></li>
{% endblock %}
私はdjango1.4とpython 2.7を使用しています。私の urls.py は次のとおりです。
アプリケーション全体の場合:
urlpatterns = patterns('',
url(r'^$', main_page, name="main_page"),
url(r'^users/',include('user_manager.urls')),
)
user_manager モジュールの場合:
urlpatterns = patterns('user_manager.views',
url(r'^$', users, name="user_page"),
url(r'^logout/$', user_logout, name="logout"),
url(r'^login/$', user_login, name="login"),
url(r'^(\w+)/$', user_page),
url(r'^register/$', register_page),
)