我是Django的新手,我正在尝试创建一个小网站,点击一个标志,语言也会发生变化。我正在使用django i18n:
urls.py
from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns
urlpatterns = [url(r'^i18n/', include('django.conf.urls.i18n'))]
urlpatterns += i18n_patterns(
url(r'^$', views.home, name='home'),
)
问题是,当我运行以下代码时:
templetatags.py
@register.simple_tag
def test():
r = requests.post('http://localhost:8000/i18n/setlang/', data = {'lang':'en', 'next' : '/'})
print r.status_code
home.html的
<div id='country_flags'>
<a hreflang="en" href="{% test %}"><img id='en' src='{% static "mysyte/images/gb.png" %}'></a>
</div>
r.status_code的结果是403。
我做错了什么?
答案 0 :(得分:0)
django中的任何POST请求都要求您默认发送CSRF-Cookie。您可以选择:
@csrf_exempt
从视图中移除任何csrf保护(在您的情况下为http://localhost:8000/i18n/setlang/
的视图)注意: 如果你想使用带有基于类的视图的装饰器,请修饰该视图的dispatch()函数