**کارها:**
- ثبتکامنت
- نمایش کامنتها
**تعریف پروژه:**
در این سوال قصد داریم تا مهارت خواندن و تغییر و برطرف کردن باگ های کد های موجود را بسنجیم. بدین منظور یک پروژه موجود را از Github درنظر گرفتهایم. شما میتوانید از [این لینک](http://bayanbox.ir/download/5071498109560718760/bootcamp-project.zip) پروژه را دانلود کنید و از آن به عنوان مبنا توسعه کد استفاده کنید. این فایل یک ورژن خاص از [این پروژه در گیت هاب](https://github.com/vitorfs/bootcamp/) است. برای توضیحات بیشتر و توضیح نحوه اجرای پروژه به این صفحه مراجعه کنید.
ابتدا کد ها را خوانده و به فهم نسبی از پروژه برسید. در این سوال قصد داریم در قسمت Questions کار کنیم.
این قسمت از سایت، یک سایت پرسش و پاسخ مانند سایت [Stack overflow](https://stackoverflow.com/) است که در آن پرسش و پاسخ صورت میگیرد.
در این قسمت اگر ابهامی در سوال وجود داشته باشد، افرادی که میخواهند به سوال پاسخ دهند باید بتوانند سوال خود را بپرسند تا کسی که سوال را مطرح کرده است ابهام سوال را برطرف کند. برای این کار در سایت Stack overflow بخشی برای گذاشتن کامنت روی سوال ها وجود دارد که در سیستم مورد بحث سوال در نظر گرفته نشده است.
حال از شما میخواهیم این قابلیت را به سایت اضافه کنید.
### ۱. ثبت کامنت:
میخواهیم یک url وجود داشته باشد تا کامنت های خود را به آن ارسال کنیم. آدرس Url باید به شکل زیر باشد.
```
/questions/question/comment
```
* این url باید فقط کامنت هایی را بپذیرد که با متد POST ارسال شده اند.
* قرار است این url با استفاده از Ajax فراخوانی شود.
* در دیکشنری داده های POST کلید های `question` و `comment` باید وجود داشته باشد که به ترتیب id سوالی که روی آن کامنت میگذاریم و متن کامنت است.
* کاربر ای که روی سوال کامنت گذاشته است همان کاربری است که در حال حاضر در سایت لاگین است. بنابراین کاربرانی که login نکرده اند نباید بتوانند روی سوال کامنت بگذارند.
* این تابع باید یک json به شکل زیر بازگرداند که مشخص کننده وضعیت ثبت کامنت است.
```
{ "status": <status-code> }
```
* در صورتی که ثبت کامنت موفقیت آمیز بود، کد وضعیت 0 بازگردد.
* در صورتی که متن کامنت خالی بود یا فقط شامل white space بود این کامنت نباید ثبت شود و کد وضعیت 1 بازگردد.
* در صورتی که سوالی با id فرستاده شده وجود نداشت کد وضعیت 2 بازگردد.
* در صورتی که متد ارسالی به url مورد نظر POST نبود، کامنت ثبت نشود و کد وضعیت 3 بازگردد.
### نمایش کامنت ها:
تمام کامنت های مربوط به یک سوال باید در صفحهی مربوط به سوال، یعنی 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
```
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.