我有一个基本的Django应用程序(Django 1.7)和一个使用基本路由的AngularJS(1.2.19)前端。首次访问站点时,路由正确加载并在ng-view中显示内容。但是,如果我进入/ login并成功登录该站点(默认的Django登录页面),我将被重定向到主页,并且无法在ng-view中加载路由。我必须重新加载页面(通常是两次)或清除缓存以获取我的ng-view中的内容以加载。即使单击模板中的链接也无法显示ng-view内容。如何在重定向后强制在ng-view中加载内容?
home.html的
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular-route.js"></script>
</head>
<body ng-app="testyApp">
<h1>Routing Test</h1>
<ul>
<li><a href="#/">Default</a></li>
<li><a href="#/test">Other</a></li>
</ul>
<div ng-view></div>
<script type="text/javascript" src="/static/main.js"></script>
</body>
</html>
main.js
angular.module('testyApp', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/', {
template:'<h3>Home page</h3>'
})
.when('/test', {
template:'<h3>Other page</h3>'
})
.otherwise({redirectTo: '/'});
}]);
我不认为这些文件是必要的,但在这里它们只是以防万一。
urls.py
from django.conf.urls import patterns, include, url
from app_test.views import home
urlpatterns = patterns('',
url(r'^$', 'app_test.views.home', name='home'),
url(r'^login/$', 'django.contrib.auth.views.login', {
'template_name': 'login.html'}),
)
views.py
from django.shortcuts import render
def home(request):
return render(request, 'home.html')
的login.html
{% extends 'base.html' %}
{% block header_text %}Login{% endblock %}
{% block content %}
<form name="loginForm"
method="post"
action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}
{% for field in form %}
<div>
{{ field.label_tag }}
<br>
{{ field }}
</div>
{% endfor %}
<div>
<input type="submit"
value="Login"
id="id_submit">
</div>
</form>
{% endblock %}
更多信息: 在进行了一些深入测试后,使用Chrome作为我的测试浏览器似乎是孤立的问题。使用Firefox和Safari(未测试Opera),ng-view会在登录页面重定向后按预期加载。我不知道为什么会这样。任何解释都将不胜感激。