有人可以检查我的 Django 代码有什么问题吗?

问题描述 投票:0回答:1

所以,我刚刚在 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 中执行以进行测试的正确命令。预先感谢您!

python django database curl backend
1个回答
0
投票

视图预计至少会为看起来有问题的 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)
        
        
© www.soinside.com 2019 - 2024. All rights reserved.