Skip to content

saeed617/pwa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

در این سوال قصد داریم به کمک کتابخانه DjangoRestFramework یک RESTful API برای وبلاگ خود طراحی کنیم.

می خواهیم یک API برای وبلاگ خود طراحی کنیم به طوری که کاربران بتوانند از طریق این API پست ها و کامنت های خود را مدیریت کنند و همچنین ادمین وبلاگ بتواند به تمام فعالیت ها نظارت داشته باشد و در صورت لزوم دست به کار شده و خودی نشان دهد.

پروژه اولیه

پروژه اولیه را از اینجا دانلود کنید. ساختار این پروژه به شرح زیر است:

blog
├── app
│   ├── migrations
│   │   ├── __init__.py
│   │   └── 0001_initial.py
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── models.py
│   ├── urls.py
│   ├── serializers.py
│   ├── permissions.py
│   └── views.py
├── Blog
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── requirements.txt

جزئیات

در فایل models.py دو مدل به شرح زیر وجود دارد:

۱. مدل Post شامل فیلدهای زیر:

  • نویسنده :‌ owner
  • عنوان :‌‌ title
  • متن پست :‌ body
  • زمان انتشار پست :‌ created
  • زمان ویرایش پست :‌ updated

۲. مدل Comment شامل فیلدهای زیر:

  • نویسنده :‌ owner
  • متن کامنت : body
  • پست مربوطه : post
  • زمان انتشار کامنت :‌ created
  • زمان ویرایش کامنت : updated

در فایل views.py چهار view به شرح زیر وجود دارد:

  • PostList

GET: ‌ لیست تمام پست ها را به صورت یک خروجی JSON به فرمت زیر بر می گرداند

[
    {
        "title": "test",
        "body": "test_body",
        "created": "2018-07-18T11:27:40.074000Z",
        "owner": "admin"
    },
    {
        "title": "test",
        "body": "test_body",
        "created": "2018-07-18T11:28:00.152000Z",
        "owner": "test_author"
    },
    ...
]

POST:

عنوان و متن پست را به عنوان ورودی به صورت JSON می پذیرد و در صورتی که کاربر از قبل لاگین کرده باشد یک پست جدید به نام این کاربر می سازد

  • PostDetail

GET:

جزئیات یک پست را به صورت یک خروجی JSON به فرمت زیر بر می گرداند

{
    "title": "test",
    "body": "test_body",
    "created": "2018-07-18T11:26:53.044000Z",
    "updated": "2018-07-18T11:26:53.044000Z",
    "owner": "admin",
    "comment_set": [
        "http://localhost:8000/api/comments/1/",
        "http://localhost:8000/api/comments/10/"
    ]
}

PUT:

عنوان و متن پست را به عنوان ورودی به صورت JSON می پذیرد و در صورتی که کاربر مالک پست و یا ادمین باشد پست را ویرایش می کند.

DELETE:

در صورتی که کاربر مالک پست و یا ادمین باشد پست را حذف می کند.

  • CommentDetail

GET:

جزئیات یک کامنت را به صورت یک خروجی JSON به فرمت زیر بر می گرداند

{
    "post": "http://localhost:8000/api/comments/1/",
    "owner": "hamid",
    "body": "test_body",
    "created": "2018-07-18T11:28:47.400000Z",
    "updated": "2018-07-18T11:28:47.401000Z"
}

PUT:

متن کامنت را به عنوان ورودی به صورت JSON می پذیرد و در صورتی که کاربر مالک کامنت و یا ادمین باشد کامنت را ویرایش می کند.

DELETE:

در صورتی که کاربر مالک کامنت و یا ادمین باشد کامنت را حذف می کند.

  • AddComment

POST:

متن کامنت را به عنوان ورودی به صورت JSON می پذیرد و در صورتی که کاربر از قبل لاگین کرده باشد یک کامنت جدید به نام این کاربر و برای پست انتخاب شده می سازد

اما کارهایی که شما باید تو این پروژه انجام بدید:

شما باید در دو فایل serializers.py و permissions.py کلاس هایی که در این view ها استفاده شده و پیاده سازی نشده اند را طوری پیاده سازی کنید که view ها طبق توضیحات داده شده عمل کنند.

نکات

  • شما تنها مجاز به تغییر در app/serializers.py و app/permissions.py هستید. اگر تغییری در سایر فایل‌ها ایجاد کنید، این تغییرات نادیده گرفته خواهد شد.
  • پس از اعمال تغییرات، کل پروژه را Zip کرده و ارسال کنید.
  • نام فایل Zip اهمیت ندارد.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published