Django调用HTMX请求视图报错:'WSGIRequest'对象无'htmx'属性
解决Django中'WSGIRequest' object has no attribute 'htmx'错误
这个错误的核心原因是:Django原生的WSGIRequest对象并没有htmx属性,你需要通过django-htmx扩展来让Django识别HTMX请求并给request添加这个属性。具体解决步骤如下:
安装django-htmx包
在终端执行安装命令:pip install django-htmx配置Django项目
- 打开项目根目录的
settings.py,在INSTALLED_APPS列表中添加'htmx':INSTALLED_APPS = [ # 其他已安装应用 'htmx', ] - 同样在
settings.py的MIDDLEWARE列表中添加'htmx.middleware.HtmxMiddleware'(建议放在django.middleware.common.CommonMiddleware之后):MIDDLEWARE = [ # 其他中间件 'django.middleware.common.CommonMiddleware', 'htmx.middleware.HtmxMiddleware', # 其他中间件 ]
- 打开项目根目录的
重启Django开发服务器
配置完成后,重启你的Django服务器,此时request.htmx就能正常使用了。
额外优化建议
你的HTML代码里用了hx-post但同时在URL里带了GET参数slug,而视图中是通过request.GET.get('slug')获取参数,这里存在请求方法不匹配的问题:
- 要么把HTML中的
hx-post改成hx-get,保持和视图中GET参数的逻辑一致; - 要么把视图中的
request.GET.get('slug')改成request.POST.get('slug'),同时调整HTML传递参数的方式(比如用hx-vars传递POST数据)。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

