Professional Documents
Culture Documents
Power Book Detail
Power Book Detail
(مانند )GET، POST، PUT، DELETEرا به یک URLارسال کرده و پاسخها را مشاهده کنید .این برای آزمایش و
عیبیابی نقاط پایانی APIشما بسیار مفید است .شما میتوانید Postmanرا برای شبیهسازی درخواستها به سرور
Djangoخود استفاده کنید بدون اینکه نیازی به رابط کاربری جلویی داشته باشید.
رابط کاربری جلویی؟
@csrf_exempt
نوعی حمله است که کاربر وب را به انجام اقداماتی که قصد آنها را ندارند ،فریب میدهد Django .از این نوع حمالت به
دکوراتور @ csrf_exemptراهی برای گفتن به Djangoاست که از اعمال احراز هویت CSRFبرای یک نمای
خاص خودداری کند .این زمانی مفید است که شما در حال آزمایش APIخود از طریق ابزارهایی مانند Postmanهستید.
با این حال ،مهم است که توجه داشته باشید که غیرفعال کردن محافظت CSRFمیتواند باعث آسیبپذیری برنامه شما
شود ،بنابراین باید با احتیاط و فقط زمانی که ضروری است استفاده شود.
Imports
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import pandas as pd
from .models import Book
JsonResponse: .۱تابع کمکی Djangoبرای ایجاد پاسخ در قالب .JSON
csrf_exempt: .۲دکوراتور برای معافیت این نما از تأیید ( CSRFمعموًال برای تولید توصیه نمیشود).
pandas as pd: .۳وارد کردن کتابخانه ،pandasکه برای دستکاری و تجزیه و تحلیل دادهها استفاده میشود ،بهویژه برای
رسیدگی به فایلهای Excelدر اینجا.
from .models import Book: .۴وارد کردن مدل Bookاز فایل models.pyدر همان دایرکتوری (نشان داده شده
توسط .).
pip install openpyxl
pip install pandas
View Function
@csrf_exempt
def upload_books(request):
.میگیرد
Handling the Request
این خط بررسی میکند که آیا درخواست ورودی یک درخواست POSTاست که معموًال برای ارسال دادهها استفاده
میشود.
Handling the Uploaded File
excel_file = request.FILES.get('file')
if not excel_file:
return JsonResponse({'error': 'No file provided'}, status=400)
.' از فایلهای بارگذاری شدهfile' تالش برای بازیابی فایلی با کلید:excel_file = request.FILES.get('file') .۸
پاسخ، اگر هیچ فایلی یافت نشود:return JsonResponse({'error': 'No file provided'}, status=400) .۱۰
data = pd.read_excel(excel_file)
:)(for _, row in data.iterrowsاین خط یک حلقه است .حلقه به ما این امکان را میدهد که از طریق هر ردیف از
دادههای فایل اکسل حرکت کنیم )(iterrows .یک روش برای پیمایش هر ردیف در دادهها است .در این حلقه row ،نشان
دهنده هر ردیف فعلی از دادههای فایل اکسل است.
Creating Book Instances
(Book.objects.create
title=row.get('title'),
author=row.get('author'),
page=row.get('page'),
publisher=row.get('publisher'),
)’date=row.get('date
)
.این خط یک رکورد جدید در پایگاه داده ایجاد میکند .هر رکورد معادل یک کتاب است ۲. Book.objects.create(...):
. با یک پیام موفقیت ارسال میکندJSON این خط یک پاسخ،اگر فایل با موفقیت پردازش شود
Handling Other HTTP Methods
else:
return JsonResponse({'error': 'Invalid method'}, status=400)
HTTP ۴۰۰ دربر میگیرد و یک پیام خطا با کد وضعیت، نیستPOST مواردی را که در آنها متد درخواستelse این بخش
.برمیگرداند