所以,我刚刚在 Django 中做了一个 CRUD,现在我想测试它,创建和删除测试正在 cmd 中使用这些命令: 创造 curl -X POST http://localhost:8000/user/ -H "Content-Type: application/json" -d "{"用户名": "john_doe", "电子邮件": "[电子邮件受保护]", “first_name”:“John”,“last_name”:“Doe”}”
删除 卷曲-X删除http://localhost:8000/user/john_doe/
但问题是当我尝试这些时: 得到 卷曲 -X GET http://localhost:8000/user/john_doe/
放置 curl -X PUT http://localhost:8000/user/john_doe/ -H "内容类型:application/json" -d "{"email": "[电子邮件受保护]"}"
我遇到了一个巨大的错误。
首先这是我的views.py代码:
import json
import pymongo
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
client = pymongo.MongoClient('mongodb://localhost:27017/')
database = client['PoseTrack_Database']
users = database['users']
@csrf_exempt
def create_user(request):
if request.method == 'POST':
user_data = json.loads(request.body)
users.insert_one(user_data)
return JsonResponse({'status': 'success', 'message': 'User created successfully!'}, status=201)
@csrf_exempt
def delete_user(request, username):
if request.method == 'DELETE':
users.delete_one({'username': username})
return JsonResponse({'status': 'success', 'message': 'User deleted successfully!'}, status=200)
@csrf_exempt
def view_user(request, username):
if request.method == 'GET':
data = users.find_one({'username': username})
return JsonResponse(data)
@csrf_exempt
def update_user(request, username):
if request.method == 'PUT':
new_data = json.loads(request.body)
users.update_one(username, {'$set': new_data})
这是我的 urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('user/', views.create_user),
path('user/<username>/', views.delete_user),
path('user/<username>/', views.view_user),
path('user/<username>/', views.update_user),
]
所以我尝试更改命令中的内容或尝试将错误捕获器放入程序中,但这对于这么小的 CRUD 并没有真正起作用。我希望有人告诉我代码中有什么问题,或者向我展示在 cmd 中执行以进行测试的正确命令。预先感谢您!
视图预计至少会为看起来有问题的 PUT 返回 HttpResponse。我们可以将用户对象的更新版本包装在 Json 响应中,并将其在响应中发送回来。
@csrf_exempt
def update_user(request, username):
if request.method == 'PUT':
new_data = json.loads(request.body)
users.update_one(username, {'$set': new_data})
data = users.find_one({'username': username})
return JsonResponse(data)