Django框架使用Djoser执行用户激活操作时出现404错误求助
问题原因
你的404错误由两个核心问题导致:
- 自定义视图的post方法中,请求的目标地址配置错误:你将激活请求发给了自己定义的
ACTIVATION_BASE_ROUTE路径,该路径下仅配置了带uid、token参数的路由规则,无对应根路径的post处理逻辑,自然返回404。 - 发送json格式的payload时未指定请求头,即使地址正确djoser也无法正常解析请求参数。
修复步骤
1. 修正ActivationView的post请求逻辑
修改Activate_User_App/views.py中的post方法,将请求目标改为djoser自带的激活接口,同时补充json请求头:
def post (self, request, uid, token): print('UID : ', uid) print('Token : ', token) payload = json.dumps({'uid': uid, 'token': token}) print("payload : " , payload) protocol = 'https://' if request.is_secure() else 'http://' web_url = protocol + request.get_host() # 替换为djoser的激活接口地址 post_url = web_url + '/api/authentication/users/activation/' print('post_url : ' + post_url) # 补充Content-Type请求头 response = requests.post(post_url, data = payload, headers={'Content-Type': 'application/json'}) print("response : ", response) return HttpResponse(response.text)
2. 可选调整路由顺序
将project/urls.py中djoser的路由配置移到自定义激活路由之前,避免路径优先级冲突:
urlpatterns = [ re_path(r'^api/authentication/', include('djoser.urls')), re_path(r'^api/authentication/', include('djoser.urls.authtoken')), path(ACTIVATION_BASE_ROUTE, include('Activate_User_App.urls')), ]
修复后重新测试即可正常完成用户激活。
内容的提问来源于stack exchange,提问作者Shweta Shinde
相关产品推荐
相关产品推荐

