0

私は現在、Django に慣れるために Django プロジェクトに取り組んでいます。現在、2 つのテンプレートを作成しようとしています。1 つはログイン ページへのリンクがあるメイン ページで、ユーザーがログインしてからテンプレートに戻り、追加のコンテンツ (nginx で処理されます) と別のテンプレートを表示します。ログインしている場合にのみアクセスできます。何らかの理由で機能していないように見えるか、ログインが機能しないとしましょう。

これは、views.py ファイルです。

from django.shortcuts import render_to_response, get_object_or_404, HttpResponse
from django.contrib.auth import *
from django.contrib.auth.decorators import login_required

def index(request):
        return render_to_response('index.html')

@login_required
def main(request):
    return render_to_response('loginrequired.html')

そして、これがメインのテンプレートです:

{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

<html>
<head>
<title>Django NGINX Test</title>
</head>
<body>
<h1>Django NGINX Test</h1>
<img src="{{STATIC_PREFIX}}beach.jpg"/>
<BR><BR>
<h2>
{% if user.is_authenticated %}
  <a href="test">Log out</a> {{user.username}}
{% else %}
  <a href="login">Log in</a>
{% endif %}
</h2>
</body>
</html>

これは login_required テンプレートです:

{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

<html>
<head>
<title>Django NGINX Test</title>
</head>
<body>
<h1>Django NGINX Test</h1>
<img src="{{STATIC_PREFIX}}beach.jpg"/>
<BR><BR>
Welcome {{user.username}}. You're now logged in as required.<BR><BR>
<h2>
{% if user.is_authenticated %}
  <a href="test">Log out</a> {{user.username}}
{% else %}
  <a href="login">Log in</a>
{% endif %}
</h2>
</body>
</html>

最後になりましたが、私のログイン テンプレートは次のとおりです。

<html>
<head>
    <title>User Login</title>
</head>
<h1>User Login</h1>
{% if form.errors %}
    <p>Your username and password didn't match.
        Please try again.</p>
{% endif %}
<form method="post" action="." >
{% csrf_token %}
    <p><label for="id_username">Username:</label>
        {{ form.username }}</p>
    <p><label for="id_password">Password:</label>
        {{ form.password }}</p>
    <input type="hidden" name="next" value="/" />
    <input type="submit" value="login" />
</form>
</body>
</html>

助けていただければ幸いです。これについては、すでに Django チュートリアルを調べましたが、わかりませんでした。

4

2 に答える 2

5

に次のミドルウェアが含まれていることを確認する必要がありますsettings.py

  • セッションミドルウェア
  • 認証ミドルウェア

という名前のコンテキスト変数userがテンプレートで使用できるようにするには、django.contrib.auth.context_processors.authコンテキスト プロセッサが .xml にあることを確認する必要がありますsettings.py

詳細については、Djano auth トピックを参照してください。

于 2012-05-24T16:52:46.733 に答える
1

ユーザーはログインしていますが、テンプレートに渡していないため、ユーザーの詳細は表示されません。テンプレートを RequestContext でレンダリングするか、render代わりに新しいショートカットを使用してくださいrender_to_response

于 2012-05-24T16:57:03.687 に答える