开源软件名称:bitlabstudio/django-review开源软件地址:https://github.com/bitlabstudio/django-review开源编程语言:Python 98.3%开源软件介绍:Django ReviewA reusable Django app that lets users write reviews for any model InstallationTo get the latest stable release from PyPi $ pip install django-review To get the latest commit from GitHub $ pip install -e git+git://github.com/bitmazk/django-review.git#egg=review TODO: Describe further installation steps (edit / remove the examples below): Add INSTALLED_APPS = (
...,
'hvad',
'review',
'user_media',
'generic_positions',
) Add the urlpatterns = patterns('',
...
url(r'^review/', include('review.urls')),
) Don't forget to migrate your database ./manage.py migrate UsageThe only step you'll have to take is to link to the review views. For example,
you created a Create a button and add some markup like: <a href="{% url "review_create" content_type='book' object_id=book.pk %}">{% trans "Review this book" %}</a> Ratings & CategoriesTo make use of ratings you'll have to create RatingCategory objects. For example, you want to allow reviews of a hotel booking. You now might add categories like "room", "service", "food" or whatever. After you have created those categories in the standard Django admin interface they will appear in your review form. The average rating of an object is generated by all of its category ratings. Template tagstotal_review_averageFor rendering the total review average for any object, you can use the
assignment tag {% load review_tags %}
{% total_review_average object 100 as percentage %}
<p>{{ percentage }}% of our users recommended this!</p>
{% total_review_average object 5 as stars %}
<p>This object got {{ stars }} out of 5 stars.</p> render_category_averagesRenders the template {% load review_tags %}
{% render_category_averages object 100 %} If you had 2 categories, this would per default render to something like the following example, but you can of course customize the template to your needs. <table>
<tr><th>Category 1:</th><td>10.0</td></tr>
<tr><th>Category 2:</th><td>20.0</td></tr>
<tr><th>Amount of reviews:</th><td>2</td></tr>
</table> get_reviewsAn assignment tag, that simply returns the reviews made for the given object. An example usage would look like this: {% load review_tags %}
{% get_reviews object as reviews %}
{% for review in reviews %}
<p>
{{ review.get_average_rating }}
</p>
<p>
{% if review.content %}
{{ review.content|truncatewords:'70' }}
{% else %}
Reviewed without description.
{% endif %}
</div>
<a href="{% url "review_detail" pk=object.pk %}">Review details</a>
{% endfor %} get_review_averageAn assignment tag, that returns the review average for the given object. An example usage would look like this: {% load review_tags %}
{% get_review_average object as review_average %}
<p>This object is rated by {{ review_average }}</p> get_review_countAn assignment tag, that simply returns the amount of reviews made for the given object. An example usage would look like this: {% load review_tags %}
{% get_review_count object as review_count %}
<p>{{ review_count }} users have reviewed this so far.</p> user_has_reviewedTo quickly check if a user has already reviewed the given object, you can use this template tag. An example usage could be something like this: {% load review_tags %}
{% user_has_reviewed myobject request.user as has_reviewed %}
{% if has_reviewed %}
<p>Thanks for your opinion!</p>
{% else %}
<a href="{% url "review_create" content_type='book' object_id=book.pk %}">{% trans "Review this book" %}</a>
{% endif %} SettingsDefault behaviour:
If you want to change this behaviour, or if you like to add some more permission checks, read on. REVIEW_RATING_CHOICESIf you want other rating choices than 0-5, you can define a new tuple, like: REVIEW_RATING_CHOICES = (
('1', 'bad'),
('2', 'average'),
('3', 'excellent'),
) REVIEW_ALLOW_ANONYMOUSAllows anonymous review postings, if set to REVIEW_DELETION_SUCCESS_URLName of the URL to redirect to after deleting a review instance. This could be your review listing, for example. REVIEW_UPDATE_SUCCESS_URL (optional)Default: DetailView of the instance. Name of the URL to redirect to after creating/updating a review instance. This could be your review listing, for example. REVIEW_UPDATE_SUCCESS_URL = 'my_view_name' Or you can also specify a function, that returns the full path. The function then takes the review as parameter, so you can also access the reviewed item like follows REVIEW_UPDATE_SUCCESS_URL = lambda review: review.reviewed_item.get_absolute_url() REVIEW_AVOID_MULTIPLE_REVIEWSAvoids multiple reviews by one user, if set to REVIEW_PERMISSION_FUNCTIONCustom function to check the user's permission. Use a function and note that the user and the reviewed item are only parameters. REVIEW_PERMISSION_FUNCTION = lambda u, item: u.get_profile().has_permission(item) REVIEW_UPDATE_PERIODYou can limit the period, in which a user is able to update old reviews. Make sure to use minutes, e.g. 2880 for 48 hours. REVIEW_CUSTOM_FORMYou can create your own review form (e.g. if you want to make use of the review extra info). Just name it. REVIEW_CUSTOM_FORM = 'myapp.forms.MyCustomReviewForm' Take a look at the included test app to get an example. You can also use a custom form to add another content object to the review instance. REVIEW_FORM_CHOICE_WIDGETIf you only want to override Django's default widget for the used
# this would use a RadioSelect instead of the default Select
REVIEW_FORM_CHOICE_WIDGET = 'django.forms.widgets.RadioSelect' ContributeIf you want to contribute to this project, please perform the following steps # Fork this repository
# Clone your fork
$ mkvirtualenv -p python2.7 django-review
$ python setup.py install
$ pip install -r dev_requirements.txt
$ git co -b feature_branch master
# Implement your feature and tests
$ git add . && git commit
$ git push -u origin feature_branch
# Send us a pull request for your feature branch |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论