我已经开始在angularJS和django中构建我的应用程序,在创建登录页面后,我尝试在成功登录后将我的应用程序重定向到新的URL。我正在使用$location
变量来重定向我的页面。这是我的代码:
$scope.login = function() {
$http({
method: 'POST',
data: {
username: $scope.username,
password: $scope.password
},
url: '/pos/login_authentication/'
}).then(function successCallback(response) {
user = response.data
console.log(response.data)
if (user.is_active) {
$location.url("dashboard")
}
}, function errorCallback(response) {
console.log('errorCallback')
});
}
我的初始网址为http://localhost:8000/pos/
,点击登录按钮后,上面的函数调用,我被重定向到http://localhost:8000/pos/#/dashboard
。但我无法在urls.py
文件中的正则表达式模式中捕获此URL:
我的项目urls.py
文件:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^pos/', include('pos.urls')),
url(r'^admin/', admin.site.urls),
]
我的pos
应用程序的urls.py
文件:
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^login_authentication/$', views.login_authentication, name='login_authentication'),
url(r'^#/dashboard/$', views.dashboard, name='dashboard')
]
使用此功能,我在访问此http://localhost:8000/pos/#/dashboard
链接时获得了相同的登录页面。这意味着,在我的urls.py
应用程序的pos
文件中,我将http://localhost:8000/pos/#/dashboard
映射到urlpatterns
的第一个对象:url(r'^$', views.index, name='index')
。如何让python区分两个链接?
答案 0 :(得分:1)
你对网址有一些重大的误解和锚定。该主播被称为正式Fragment identifier
,它不是主网址的一部分,因此如果您在访问#
这样的网址时http://localhost:8000/pos/#/dashboard
,则您的浏览器会将其余部分视为#/dashboard
作为http://localhost:8000/pos/
呈现的页面中的锚点。你不应该在你的urls.py
定义中使用它。请仔细阅读上面的链接,了解锚的用法。
答案 1 :(得分:0)
使用此answer的帮助,我通过angular找到了一个很好的重定向方法,它不使用$ window附加任何锚标记:
$scope.login = function() {
$http({
method: 'POST',
data: {
username: $scope.username,
password: $scope.password
},
url: '/pos/login_authentication/'
}).then(function successCallback(response) {
user = response.data
console.log(response.data)
if (user.is_active) {
$window.location.href = '/pos/dashboard';
}
}, function errorCallback(response) {
console.log('errorCallback')
});
}