امروزه سایتهای سفارش آنلاین غذا بسار زیاد و همهگیر شدهاند، و مخصوصا شادی زیادی را برای ما برنامه نویسها فراهم کردهاند. حالا یکی از این سایتها تصمیم گرفته است برای بهتر کردن خدماتش و کمک به مشتریهای سایت در انتخاب غذا، بخش کامنت را به سایتش اضافه کند تا کاربرانی که غذایی را سفارش میدهند بتوانند نظر خودشان را راجع به غذا بگویند تا کاربران بعدی بتوانند بهتر و راحت تر غذای خودشان را انتخاب کنند.
این سایت سفارش آنلاین آنقدر سرش گرم تحویل غذاها و رسیدگی به سفارشهای مشتریهایش هست که وقت نمیکند این قابلیت را به سایتش اضافه کند و از شما میخواهد که در این کار کمکش کنید. سورس کد پروژه را میتوانید از [اینجا](https://quera.ir/qbox/download/4Xq3u9nu7P/order_food.zip) دانلود کنید.
همانطور که مشاهده میکنید، در فایل `models.py` یک مدل به نام `Food` وجود دارد که شامل سه فیلد `name`، `price` و `description` است که به ترتیب نام، قیمت و توضیحات یک غذا را نشان میدهند.
همچنین یک فایل template نیز نوشته شده است که توسط view ی `menu_view` رندر شده و لیست همه غذاها را نشان میدهد. که این view با استفاده از آدرس (url) `/menu` صدا زده میشود.
شما باید در این صفحه بخش کامنتها را به شکل زیر اضافه کنید:
+ زیر هر غذا لیست همه کامنتهای آن غذا را با فرمت زیر نشان دهید:
+ برای هر کامنت نام کسی که کامنت را گذاشته است، تاریخ ثبت کامنت و متن کامنت باید چاپ شود.
+ برای مثال یک کامنت بدین شکل است. (فرمت تاریخ باید **دقیقا** به این شکل باشد. با گذاشتن تاریخ در template، تاریخ به همین شکل به نمایش در میآید.)
```
Aug. 21, 2017, 1:41 p.m. - amirhosein
khyli khosh maze bood. mamooon :D
```
*نام و تاریخ لازم نیست حتما نسبت به هم بدین شکل باشند، یعنی میتوانید نام و تاریخ را در سطرهای جدایی نمایش دهید یا ...*
+ اگر کاربر لاگین نباشد نباید بتواند کامنتی بگذارد و بنابراین هیچ فرمی برای گذاشتن کامنت نباید نمایش یابد و به جای آن **باید** عبارت `"Please log in to leave a comment."` را در این صفحه نمایش دهید.
+ اگر کاربر لاگین باشد باید به ازای هر یک غذا در انتهای کامنتها یک فرم برای گذاشتن کامنت در نظر بگیرید. یعنی اگر n غذا داریم، n فرم نیز باید در صفحه باشد.
+ این فرمها فقط یک فیلد برای نوشتن کامنت و یک دکمه برای ثبت کامنت باید داشته باشند و میتوانند چندین فیلد hidden دیگر نیز به اختیار خود داشته باشند.
+ نویسنده پیام user name کاربر فعلی است و تاریخ و ساعت لحظه سابمیت شدن فرم برای به عنوان تاریخ آن کامنت در نظر گرفته میشود.
+ وقتی یکی از فرمها سابمیت شد بعد از ثبت شدن کامنت باید دوباره صفحهی `/menu` به نمایش درآید و کامنت ثبت شده در صفحه باشد.
+ در این لحظه بعد از ثبت کامنت یک پیام مبنی بر موفقیت آمیز بودن ثبت کامنت با متن `"your comment successfully submitted."` باید در صفحه به نمایش در بیاید که اگر صفحه دوباره refresh شود پیام نیز از صفحه حذف میشود.
+ فیلد کامنت در این فرم باید اجباری باشد و کسی نتواند کامنت با متن خالی بگذارد.
توجه کنید که اگر پاسخ شما تنها به بخشی از قسمتهای سوال پاسخ دهد، همان بخش از نمره را نیز دریافت میکنید.
### کتابخانهی استفاده شده
در این سوال شما برای انجام کارهای گفته شده ورژن 1.8.0 از کتابخانه `django-contrib-comments` را در اختیار دارید و باید از آن استفاده کنید. مستندات این کتابخانه در لینک زیر قابل مشاهده است:
[Django comments](http://django-contrib-comments.readthedocs.io/en/latest/)
### فایل آپلودی
فایلی که باید آپلود کنید یک فایل zip. است که درون آن یک پوشه `order_food` وجود دارد که شامل دو فایل `models.py` و `views.py` است و همچنین یک فایل به نام `menu.html` که درون دایرکتوری `order_food/templates/order_food`قرار دارد. توجه کنید در صورتی که فایلهای اضافی ارسال کنید، حذف خواهند شد. ساختار فایلهای ارسالی باید به شکل زیر باشد.
توجه کنید که شما باید تنها فایل `menu.html` را تغییر دهید.
```
<Your-zip-name>.zip
└── order_food
├── models.py
├── templates
│ └── order_food
│ └── menu.html
└── views.py
```