0

私は django 登録を使用しており、ログイン後に別のページにリダイレクトしたいと考えています。私はsettings.pyで使用しました:

LOGIN_REDIRECT_URL = 'http://127.0.0.1:8000/home/'

それが私がリダイレクトしたいページです。

リダイレクトに成功しました。しかし、ページのホームには、データベースのいくつかの要素を表示する必要がありますが、何もありません。要素はデータベースに存在します(チェックしました)。

任意のアイデアをお願いします? タイ

私の最初の url conf (django の url conf) => urls.py

urlpatterns = patterns('',
    url(r'^accounts/', include('dashboard.registration.backends.simple.urls')),
    url(r'^home/$', direct_to_template,{ 'template': 'index.html' }, 'index'),
url(r'^home/', include(dashboard.home.urls)),
url(r'^admin/', include(admin.site.urls)),
)

私の 2 番目の URL conf (dashboard.home.urls)

urlpatterns = patterns('dashboard.home.views',
    url(r'^$',index,name='index'),
)

dashboard.home.views でのインデックス リクエスト

def index(request):
    print 'index request'
    project_list = Project.objects.all().order_by('project_name')
    return render_to_response('index.html',{'project_list': project_list})

私のテンプレート index.html

<body>
{% if user.is_authenticated %}
    <p>Welcome, {{ user.username }}. Thanks for logging in.</p>

    <h3>Home</h3>
    <ul>
    <li><a href="Add_Project/">Add a Project</a></li>

    </ul>

    <h3>Project list</h3>
    {% if project_list %}
        <ul>
        {% for project in project_list %}
            <li> <a href={{project.project_name}}>{{ project.project_name }}</a></li>
        {% endfor %}
        </ul>
    {% else %}
        <p>There are no Projects</p>
    {% endif %} 

{% else %}
    <p>Welcome, new user. Please log in.</p>
{% endif %}
</body> 

私の設定.py

LOGIN_REDIRECT_URL = 'http://127.0.0.1:8000/home/'
4

1 に答える 1

2
url(r'^home/$', direct_to_template,{ 'template': 'index.html' }, 'index'),
url(r'^home/', include(dashboard.home.urls)),

Django は最初の一致で停止するため、URL が の場合、他のインクルード URL は呼び出されません/home/。最初のパターンのみが一致し、index.html表示されます。

も渡す必要があります。RequestContext最も簡単な方法は、renderショートカットを使用することです。

from django.shortcuts import render

def index(request):
    project_list = Project.objects.all().order_by('project_name')
    return render(request,'index.html',{'project_list': project_list})

さらに、から削除していないことを確認してください (削除"django.contrib.auth.context_processors.auth"TEMPLATE_CONTEXT_PROCESSORSない限り、デフォルトでそこにあります)。

編集:

試してみましたが、コンソールに出力したのでプロジェクトリストがあります。しかし、私のページにはプロジェクトリストがありません。

プロジェクト リストは、有効なユーザーがいる場合にのみ印刷されます。ゲストとしてログインしている場合、プロジェクト リストには何も出力されません。

これをテンプレートとして試してください:

<body>
{% if user.is_authenticated %}
    <p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
    <p>Welcome, new user. Please log in.</p>
{% endif %}

    <h3>Home</h3>
    <ul>
    <li><a href="Add_Project/">Add a Project</a></li>

    </ul>

    <h3>Project list</h3>
    {% if project_list %}
        <ul>
        {% for project in project_list %}
            <li> <a href={{project.project_name}}>{{ project.project_name }}</a></li>
        {% endfor %}
        </ul>
    {% else %}
        <p>There are no Projects</p>
    {% endif %} 

</body> 

そしてあなたのindex方法を調整してください:

from django.shortcuts import render
from django.contrib.auth.decorators import login_required

@login_required
def index(request):
    project_list = Project.objects.all().order_by('project_name')
    return render(request,'index.html',{'project_list': project_list})
于 2012-08-24T14:23:33.207 に答える