(DRF) Невозможно передать <int:id> в функцию через пост-запрос axios
Я пытаюсь с помощью axios отправить id=1
на django url.py
.
frontend:
const baseURL = 'http://localhost:8000/';
const axiosInstance = axios.create({
baseURL: baseURL,
timeout: 5000,
});
await axiosInstance.post(`api/public/favourites/1/`, {
headers: {
'content-type': 'application/json',
}
});
url.py
path('public/favourites/<int:id>/', add_favourites, name='add_favourites'),
view.py
@csrf_exempt
def add_favourites(request, id):
thread = get_object_or_404(Thread, id=id)
if request.method == 'POST':
if thread.liked.filter(username=request.user.username).exists():
thread.liked.remove(request.user.username)
else:
thread.liked.add(request.user.username)
return Response(thread, status=status.HTTP_200_OK)
Однако, я продолжаю получать ошибку: ValueError: Field 'id' expected a number but got ''.
Я действительно не могу найти ничего неправильного в url.py
& view.py
, поэтому я подозреваю, что есть ошибки в запросе axios, я пробовал удалять всю мою базу данных & удаляя все миграции, все еще безрезультатно.
У кого-нибудь есть идеи по поводу ошибки? Буду признателен.
Edit: error full traceback:
Traceback (most recent call last):
File "c:\Users\85291\Desktop\vscode\my-app\web\env\lib\site-packages\django\db\models\fields\__init__.py", line 1988, in get_prep_value
return int(value)
ValueError: invalid literal for int() with base 10: ''
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "c:\Users\85291\Desktop\vscode\my-app\web\env\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "c:\Users\85291\Desktop\vscode\my-app\web\env\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "c:\Users\85291\Desktop\vscode\my-app\web\env\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "C:\Users\85291\Desktop\vscode\my-app\web\jtravel\api\views.py", line 38, in add_favourites
thread.liked.add(request.user.username)
File "c:\Users\85291\Desktop\vscode\my-app\web\env\lib\site-packages\django\db\models\fields\related_descriptors.py", line 1048, in add
self._add_items(
File "c:\Users\85291\Desktop\vscode\my-app\web\env\lib\site-packages\django\db\models\fields\related_descriptors.py", line 1263, in _add_items
target_ids = self._get_target_ids(target_field_name, objs)
File "c:\Users\85291\Desktop\vscode\my-app\web\env\lib\site-packages\django\db\models\fields\related_descriptors.py", line 1197, in _get_target_ids
target_ids.add(target_field.get_prep_value(obj))
File "c:\Users\85291\Desktop\vscode\my-app\web\env\lib\site-packages\django\db\models\fields\related.py", line 1132, in get_prep_value
return self.target_field.get_prep_value(value)
File "c:\Users\85291\Desktop\vscode\my-app\web\env\lib\site-packages\django\db\models\fields\__init__.py", line 1990, in get_prep_value
raise e.__class__(
ValueError: Field 'id' expected a number but got ''.
thread = get_object_or_404(Thread, pk=id)