我正在使用django注册,我希望在登录后重定向到其他页面。 我在settings.py中使用:
LOGIN_REDIRECT_URL = 'http://127.0.0.1:8000/home/'
那是我想要重定向到的页面。
我成功重定向。但页面主页必须显示我的数据库中的一些元素,并且没有任何内容。这些元素存在于db(我已检查过)中。
请问好吗? TY
我的第一个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)),
)
我的第二个网址(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>
我的settings.py
LOGIN_REDIRECT_URL = 'http://127.0.0.1:8000/home/'
答案 0 :(得分:2)
url(r'^home/$', direct_to_template,{ 'template': 'index.html' }, 'index'),
url(r'^home/', include(dashboard.home.urls)),
Django将在第一场比赛中停止,因此如果网址为/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})