0

アプリ内のユーザーが既にログインしていて、「../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),
)
4

2 に答える 2

0

そのビューに@login_requiredデコレータはありますか?register_pageもしそうなら、それを削除します

于 2012-05-24T22:59:02.950 に答える
0

問題が見つかりました。DjangoはURLの正規表現を順番にチェックするため、「登録」URLはユーザーページで機能することを意図した「(\w+)/」と一致していました。だから私がしなければならなかったのは、そのURLを最後に置くことだけで、urls.pyは次のようになります:

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'^register/$', register_page),
    url(r'^(\w+)/$', user_page),
)

それにもかかわらず、なぜその間違った一致が次の値を変更していたのか、まだよくわかりません。原因はわかったけど原因がわからない…

お時間をいただきありがとうございました!

于 2012-05-27T14:56:37.787 に答える