我正在开发一个使用Django和Angular的项目。我没有Web开发人员的背景,所以请尝试解释您的答案,以便新手可以理解。
基本上我想这样做,以便登录页面是默认页面而不是索引页面。
我目前在我的主Django项目urls.py中有以下url处理程序:
url(r'^$', 'core.views.generic.index')
我还在一个名为core的应用程序中有另一个urls.py,它将访问者发送到登录页面:
url(r'^/login$', private.MeLogin.as_view())
现在我希望登录页面成为默认页面,而不是索引页面。我怎么能这样做?
我尝试在核心应用中添加以下视图文件:
@login_required(redirect_field_name='', login_url='#/login')
def index(request):
return render_to_response('html/index.html', locals(), context_instance=RequestContext(request))
不幸的是我收到了消息
此网页有重定向循环
我不知道如何解决这个问题。基本上,如果用户输入任何未由其他URL处理程序处理的URL,我希望将用户重定向到登录页面。成功登录后,它们会自动重定向到仪表板页面。
修改
登录页面URL在核心urls.py
文件中处理,并指向与索引不同的视图。
url(r'^/login$', private.MeLogin.as_view())
答案 0 :(得分:0)
Web服务器(在本例中为Django)在#
之后看不到该片段。您正在从/
重定向到/
,从而创建了重定向循环。
如果您想重定向到Django登录网址,则需要login_url='/login'
。
另外,您应该从正则表达式r'^/login$
中删除前导斜杠。
答案 1 :(得分:0)
@login_required(redirect_field_name='', login_url='#/login')
删除redirect_field_name='',
它确实不是必需的,并确保#/login
中的login_url='#/login
与您的url.py文件中的@login_required(redirect_field_name='', login_url='accounts/login/')
相同:
像
views.py
url(r'^accounts/login/', auth_views.login),
如 url.py
$('.home .bxslider').bxSlider({
initLeftVal: 20
});
//first, add extra property to defautls
var defaults = {
initLeftVal: 0;
}
//check for this function and replace whole function( dont replace just comment out)
var setSlidePosition = function(){
var initLeftVal = slider.settings.initLeftVal;
// if last slide, not infinite loop, and number of children is larger than specified maxSlides
if(slider.children.length > slider.settings.maxSlides && slider.active.last && !slider.settings.infiniteLoop){
if (slider.settings.mode == 'horizontal'){
// get the last child's position
var lastChild = slider.children.last();
var position = lastChild.position();
// set the left position
setPositionProperty(-(position.left + initLeftVal - (slider.viewport.width() - lastChild.outerWidth())), 'reset', 0);
}else if(slider.settings.mode == 'vertical'){
// get the last showing index's position
var lastShowingIndex = slider.children.length - slider.settings.minSlides;
var position = slider.children.eq(lastShowingIndex).position();
// set the top position
setPositionProperty(-(position.top+initLeftVal), 'reset', 0);
}
// if not last slide
}else{
// get the position of the first showing slide
var position = slider.children.eq(slider.active.index * getMoveBy()).position();
// check for last slide
if (slider.active.index == getPagerQty() - 1) slider.active.last = true;
// set the repective position
if (position != undefined){
if (slider.settings.mode == 'horizontal') setPositionProperty(-(position.left+initLeftVal), 'reset', 0);
else if (slider.settings.mode == 'vertical') setPositionProperty(-(position.top+initLeftVal), 'reset', 0);
}
}
}
答案 2 :(得分:0)
我假设你的Angular& Django应用程序运行在两个单独的端口,如:
8000
上的Django 1000
上的Angular 因此,如果你给/#/login
它将重定向与Django端口(8000/#/login
)相同。
那么为什么不提供完整的网址www.example.com/#/login
?