django1.3的request object文档中写道
HttpRequest.is_ajax()
Returns True if the request was made via an XMLHttpRequest, by checking the HTTP_X_REQUESTED_WITH header for the string 'XMLHttpRequest'. Most modern JavaScript libraries send this header. If you write your own XMLHttpRequest call (on the browser side), you'll have to set this header manually if you want is_ajax() to work.
开始不清楚头部的命名规范,发送异步请求的时候添加了HTTP_X_REQUESTED_WITH头,测试不行。再看了下django文档
django文档 写道
With the exception of CONTENT_LENGTH and CONTENT_TYPE, as given above, any HTTP headers in the request are converted to META keys by converting all characters to uppercase, replacing any hyphens with underscores and adding an HTTP_ prefix to the name. So, for example, a header called X-Bender would be mapped to the META key HTTP_X_BENDER.
原来HTTP是自动添加的前缀,于是改成X_Requested_With,还是不行。后来想了下django服务是用nginx反向代理的,非标准的头是要自行设定的。于是打开nginx配置文件,再server里添加了:
fastcgi_pass_header X_Requested_With;
以为可以了,一试还是不行,头晕了。google了下发现nginx是不认下划线"_"的,将头改为:
X-Requested-With
nginx配置文件改为:
fastcgi_pass_header X-Requested-With;
重启nginx再试,妥妥的。
分享到:
相关推荐
Django 中request.get和request.post的区别 POST和GET差异: POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。 POST和GET都...
关键在于,通常我们需要检查`request.is_ajax()`来识别请求是否来自Ajax,然后返回JSON或其他适合的响应格式: ```python from django.http import JsonResponse def some_view(request): if request.is_ajax(): ...
`api.rar_Token 使用redis_django_exclaimedthp_redis_roselgr`这个标题暗示了我们在讨论一个使用Redis作为存储机制,来处理Django框架中的Token验证的场景。这里的`exclaimedthp`和`roselgr`可能是项目或特定组件的...
django平台开发视频网站源代码,包括xadmin+django+python完整项目。
if request.method == 'POST' and request.is_ajax(): # 检查是否为Ajax POST请求 form = LoginForm(request.POST) if form.is_valid(): # 处理登录逻辑... return JsonResponse({'status': 'success'}) else:...
在`user_auth/models.py`中,我们可以导入并使用这个模型: ```python from django.contrib.auth.models import User # 如果需要自定义用户模型,可以继承AbstractBaseUser,但这里我们直接使用内置模型 ``` **...
考虑到效率和安全性,有两个主要方案:1)使用session或cookie,但它们都有一定的局限性,如session仅在当前浏览器会话中有效,cookie存储在客户端可能存在安全风险,且两者在时间和存储量的控制上不够精确。2)使用...
在《Packt.Django.JavaScript.Integration.AJAX.and.jQuery》中,读者将学习如何整合Django后端与使用jQuery的前端,利用AJAX技术实现实时数据通信。这包括: 1. **Django与jQuery的集成**:设置Django项目,安装...
1. **登录状态判断**:在Django中,如果用户已经登录,那么`request.user`将返回一个包含用户信息的对象,该对象通常继承自`django.contrib.auth.models.User`。如果用户未登录,则返回的是`django.contrib.auth....
- 使用Nginx作为反向代理服务器。 - 配置静态文件和媒体文件的托管。 11. **Django扩展** - 使用第三方应用,如Django Rest Framework进行API开发。 - 使用Celery进行异步任务处理。 - 集成前端框架,如React...
7. 在视图函数中使用`request.session`来存储和获取用户信息。 8. session的生命周期管理,如设置过期时间、删除session等。 9. 实战示例,如构建一个需要用户登录功能的简单应用。 通过学习这些内容,开发者可以更...
4. **requirements.txt**:这是Python项目中的一个标准文件,列出了所有依赖库及其版本,用于确保在不同环境中能正确安装和配置项目所需的所有外部模块。在这个项目中,我们可能找到Django、html.parser以及其他与...
本项目"pyecharts_Django_Ajax_web前后端分离demo.zip"提供了一个基于Python的Web应用示例,它整合了Pyecharts、Django框架以及Ajax技术,展示了如何实现实时数据展示和传输。 **1. Pyecharts** Pyecharts是一个...
原始的Request对象并不总是全局可访问的,尤其是在多线程环境中,每个线程都有自己的Request实例,直接使用全局变量可能会导致数据混乱。 `django-middleware-global-request-0.2.0`这个中间件解决了这个问题,它...
在Django框架中,Form是处理用户输入数据的重要工具,它简化了模型与视图之间的交互,使得数据验证和处理更加高效。本教程基于Django 1.6和Python 2.7.6,将详细介绍如何利用Form实现注册、登录、注销以及修改密码...
在`context_processors`中包含的'django.template.context_processors.media'是必须的,因为它允许模板访问到`MEDIA_URL`变量,进而正确生成图片的URL。 在应用的URL配置文件(urls.py)中,需要导入`static`函数,...
要在你的Python环境中安装`django_include_by_ajax`,你可以使用Python的包管理工具pip: ```bash pip install django_include_by_ajax-0.4.0-py2.py3-none-any.whl ``` 安装完成后,你需要在Django项目的`...
if request.is_ajax(): # 检查请求是否为Ajax # 进行CSRF验证 if request.method == 'POST': # 验证CSRF令牌 # ... # 处理业务逻辑 # ... # 返回JsonResponse return JsonResponse({'status': 'success...