0

workouts.htmlしたがって、ユーザーが認証されているかどうかを確認し、認証されている場合はページにリダイレクトするインデックス ページがあります。

def index(request, auth_form=None, user_form=None):
    if request.user.is_authenticated():
        user = request.user
        context = {'user': user}
        template = 'workouts.html'
        return render(request, template, context)
    else:
        auth_form = auth_form or AuthenticateForm()
        user_form = user_form or UserCreateForm()
        template = 'index.html'
        context = {'auth_form': auth_form, 'user_form': user_form}
        return render(request, template, context)

ログイン/認証ビューもありますが、それらはすべて正常に機能します。私が問題に直面しているのはworkouts.html、認証されたユーザーのリダイレクトをテストするための非常に基本的なテンプレート ページを作成したことです。

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <div>These are your workouts, {{ user.username }}.</div>
    </body>
</html>

テストアカウントでログインしました。すべて正常に動作します。ただし、ログアウトフォームのように、余分な html を追加しようとすると、次のようになります。

<form action="/logout">
    <input type="submit" value="Log Out" />
</form>

既にレンダリングした HTML 以外は何も表示されません。サーバーを再起動して同じ効果を得ようとしました。私はまた、もっと単純なものを追加しようとしました

<div>wtf</div>

最初のメッセージ以外は何も表示されません。ページ上のすべてを削除しても、"These are your workouts, test1"メッセージは表示されます。ユーザーを手動でログアウトしても、同じ最初のメッセージが表示されます。他のすべての動作 (フォーム認証、初期レンダリング、URL ルーティングなど) が正常に機能しているように見えるのに、テンプレート エンジンが新しい変更を登録しないのはなぜですか?

4

1 に答える 1

2

大げさな推測をして、これを閉じる必要があります:

     <input type="submit" value="Log Out"

次のようになります。

    <input type="submit" value="Log Out" />

考えられる理由:入力が閉じられるまで、ブラウザはすべてを「入力タグ内」の一部として解釈しますが、閉じられないため、レンダリングされることはありません。

とにかく:HTMLが有効であることを確認してください。

于 2013-03-21T18:56:28.673 に答える