در این سوال قصد داریم تا مهارت خواندن و تغییر و برطرف کردن باگهای کدهای موجود را بسنجیم. بدین منظور یک پروژه موجود را از Github درنظر گرفتهایم. شما میتوانید از این لینک پروژه را دانلود کنید و از آن به عنوان مبنای توسعه کد استفاده کنید. این فایل یک ورژن خاص از این پروژه در گیت هاب است.
ابتدا کدها را خوانده و به فهم نسبی از پروژه برسید. در این سوال قصد داریم در قسمت Questions کار کنیم.
این قسمت از سایت، یک سایت پرسش و پاسخ مانند سایت Stack overflow است که در آن پرسش و پاسخ صورت میگیرد.
در این قسمت اگر ابهامی در سوال وجود داشته باشد، افرادی که میخواهند به سوال پاسخ دهند باید بتوانند سوال خود را بپرسند تا کسی که سوال را مطرح کرده است ابهام سوال را برطرف کند. برای این کار در سایت Stack overflow بخشی برای گذاشتن کامنت روی سوالها وجود دارد که در سیستم مورد بحث سوال در نظر گرفته نشده است.
حال از شما میخواهیم این قابلیتها را به سایت اضافه کنید.
۱. ثبت کامنت
میخواهیم یک url وجود داشته باشد تا کامنتهای خود را به آن ارسال کنیم. آدرس Url باید به شکل زیر باشد.
/questions/question/comment
- این url باید فقط کامنتهایی را بپذیرد که با متد POST ارسال شدهاند.
- قرار است این url با استفاده از Ajax فراخوانی شود.
- در دیکشنری دادههای POST کلیدهای
question
وcomment
باید وجود داشته باشد که به ترتیب id سوالی که روی آن کامنت میگذاریم و متن کامنت است. - کاربری که روی سوال کامنت گذاشته است همان کاربری است که در حال حاضر در سایت لاگین است. بنابراین کاربرانی که login نکردهاند نباید بتوانند روی سوال کامنت بگذارند.
- این تابع باید یک json به شکل زیر بازگرداند که مشخص کننده وضعیت ثبت کامنت است.
{ "status": <status-code> }
- در صورتی که ثبت کامنت موفقیتآمیز بود، کد وضعیت ۰ را بازگردانید.
- در صورتی که متن کامنت خالی بود یا فقط شامل white space بود این کامنت نباید ثبت شود و کد وضعیت ۱ را بازگردانید.
- در صورتی که سوالی با id فرستاده شده وجود نداشت، کد وضعیت ۲ را بازگردانید.
- در صورتی که متد ارسالی به url مورد نظر POST نبود، کامنت ثبت نشود و کد وضعیت ۳ را بازگردانید.
۲. نمایش کامنتها
تمام کامنتهای مربوط به یک سوال باید در صفحهی مربوط به سوال، یعنی url /questions/<question-id>
نمایش داده شوند.
- کنار هر کامنت باید
username
کسی که کامنت گذاشته نیز نمایش داده شود.
نکات
- قابلیتهای فعلی سایت نباید تغییری کند!
- از اهداف این سوال این است که بتوانید یک پروژه را با توجه به توضیحات ارائه دهندهی پروژه اجرا کنید. بنابراین اجرا نشدن پروژه به معنای اشتباه بودن کد نیست.
نحوه ارسال
کل پروژه را zip کرده و ارسال کنید. فقط توجه کنید که فایل manage.py
باید مستقیما در ریشهی فایل zip باشد و در هیچ پوشه دیگری نباشد. یعنی ساختار فایل zip ارسالی شما باید مانند زیر باشد:
<Your-zip-name>.zip
├── bootcamp
│ ├── activities
│ │ ├── __init__.py
│ │ ├── migrations
│ │ ├── models.py
│ │ ├── static
│ │ ├── templates
│ │ ├── tests
│ │ └── views.py
│ ├── articles
│ │ ├── forms.py
│ │ ├── __init__.py
│ │ └── ...
│ ├── authentication
│ │ ├── forms.py
│ │ └── ...
│ ├── core
│ │ └── ...
│ ├── decorators.py
│ ├── feeds
│ │ └── ...
│ ├── __init__.py
│ ├── locale
│ │ ├── es
│ │ ├── fr
│ │ ├── jp
│ │ ├── pt_BR
│ │ └── zh_CN
│ ├── messenger
│ │ └── ...
│ ├── questions
│ │ └── ...
│ ├── search
│ │ ├── __init__.py
│ │ ├── migrations
│ │ └── ...
│ ├── settings.py
│ ├── static
│ │ ├── css
│ │ ├── img
│ │ └── js
│ ├── templates
│ │ ├── 400.html
│ │ ├── 403.html
│ │ ├── 404.html
│ │ ├── 500.html
│ │ ├── base.html
│ │ ├── markdown_editor.html
│ │ └── paginator.html
│ ├── urls.py
│ └── wsgi.py
├── LICENSE
├── manage.py
├── README.md
├── requirements.txt
├── runtime.txt
└── setup.cfg
ارسال پاسخ برای این سؤال