我有一个drf api" POST / api / session /"登录
我使用angularjs来做那个
$resource('/api/sessions/:id/').save()
首先eveything是好的,直到我添加LocaleMiddleware
。
setting.py:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
LANGUAGE_CODE = 'zh-cn'
LANGUAGES = (
('en', 'Engilsh'),
('zh-cn', u'简体中文'),
)
url.py
urlpatterns = i18n_patterns('',
url(r'^sessions', 'rest_framework_jwt.views.obtain_jwt_token'),
)
当我再次尝试呼叫$resource('/api/sessions/:id/').save()
时,Django控制台说
[04/Nov/2015 09:09:51] "POST /api/sessions/ HTTP/1.1" 302 0
[04/Nov/2015 09:09:51] "GET /zh-cn/api/sessons/ HTTP/1.1" 405 45
这意味着LocaleMiddleware将我的请求从/api/sessions/
重定向到/zh-cn/api/sessons/
,但是" POST"到" GET"我的请求错误。
如何停止LocaleMiddleware修改" POST"到" GET"?
答案 0 :(得分:0)
如果您不想使用其余框架网址的语言前缀,请将其移至i18n_patterns
之外。在您的urls.py中,您可以将i18n_patterns
与常规的网址格式列表结合使用。
urlpatterns = [
url(r'^sessions', 'rest_framework_jwt.views.obtain_jwt_token'),
...
]
urlpatterns += i18n_patterns(
# note the '' isn't necessary in Django 1.8+
# your patterns that you do want to internationalize go here
)
有关详细信息,请参阅language prefix in URL patterns上的文档。
答案 1 :(得分:0)
“$ resource('/ api / sessions /:id /')。save()”错了!应该更改为“$ resource('api / sessions /:id /')。save()”,首先斜杠make url错误