【发布时间】:2019-10-14 22:30:33
【问题描述】:
Django 2.2.1
当我使用 Pinax Likes(https://github.com/pinax/pinax-likes) 时,出现 405 错误。
步骤如下:
pip3 install pinax-likes在项目的 settings.py 文件中添加了
'pinax.likes',, 然后补充:
PINAX_LIKES_LIKABLE_MODELS = {
"app.Post": {}
}
- 已添加
re_path(r'^likes/', include(('pinax.likes.urls', 'pinax_likes'), namespace='pinax_likes')),
到项目的 urls.py 文件,
- 下载
https://github.com/pinax/pinax-templates/tree/master/pinax/templates/templates/pinax/likes中的文件,
将这些html文件放入/home/www/venv/templates/pinax/likes/,
- 已添加
{% load pinax_likes_tags %}
{% likes_widget request.user post %}
到 post.html 文件,
python manage.py makemigrations app && python manage.py migrate && python manage.py runserver 0.0.0.0:8000打开http://127.0.0.1:8000/post/13/,出现like icon,点击icon(url:http://127.0.0.1:8000/like/14:13/),显示如下:
HTTP ERROR 405,
控制台显示如下信息:
不允许的方法 (GET):/likes/like/14:13/ 不允许的方法:/likes/like/14:13/ [29/May/2019 10:00:00]“GET /likes/like/14:13/HTTP/1.1”405 0
- 然后我在base.html中添加了
<script src="{% static 'eldarion-ajax.min.js' %}"></script>,
点击图标后,控制台显示如下信息:
禁止(CSRF 令牌丢失或不正确。):/likes/like/14:13/ [29/May/2019 10:01:31]“POST /likes/like/14:13/HTTP/1.1”403 2513
哪些步骤有误?谢谢!
【问题讨论】:
-
您的控制台应显示错误 405 的错误跟踪,请将其粘贴到您的问题中。
-
更新了问题最后的内容,谢谢
-
这很奇怪。意味着默认的小部件使用 GET 请求而不是 POST 请求,并且它的 ajax 版本没有设置 csrf 令牌。但是当我在 github 上查找 pinax-likes 的源代码时,我在任何地方都没有看到 widget.html 模板。所以我看不出是什么原因造成的。也许向我们展示您在浏览器中看到的 likes_widget 部分的 html 源代码。
-
_widget.html 文件在这里:github.com/pinax/pinax-templates/tree/master/pinax/templates/…,将这些 html 文件(_like.html、_widget.html、_widget_brief.html)放在 /home/www/venv/templates/pinax/likes/
-
您应该将模板放在您自己项目的模板目录之一中,在 pinax 目录中,例如my_app/templates/pinax/likes/...,不要修改你的 venv,因为下次你 pip install pinax 更新它时会中断。