一个可重复使用的django应用程序,它允许您站点的用户标记项目。每个用户的标签是分开的,这样自动建议功能就不会建议其他用户输入的标签。

django-user-tags的Python项目详细描述


正在工作。不要用这个!

允许用户向任何对象添加标记的django应用程序。每个用户的 标签被很好地分开,因此自动建议功能永远不会 建议由其他用户输入的标记(除非您愿意)。

安装

要使用此应用程序,您需要安装以下先决条件:

pip install Django
pip install South

如果要安装pypi的最新稳定版本:

$ pip install django-user-tags

如果您有冒险精神并希望安装来自github的最新提交:

$ pip install -e git://github.com/bitmazk/django-user-tags.git#egg=user_tags

user_tags添加到INSTALLED_APPS

INSTALLED_APPS = (
    ...,
    'user_tags',
)

不要忘记迁移数据库:

./manage.py migrate user_tags

添加jquery和jquery ui并将其标记到基本模板中,或者至少标记到 显示带有标记字段的表单的模板:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js" type="text/javascript" charset="utf-8"></script>
<script src="{{ STATIC_URL }}user_tags/js/tag-it.js" type="text/javascript" charset="utf-8"></script>

还可以将jquery ui主题和tag it主题添加到模板中:

<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/flick/jquery-ui.css">
<link href="{{ STATIC_URL }}user_tags/css/jquery.tagit.css" rel="stylesheet" type="text/css">

用法

首先,您需要修改应该能够保存标记的模型:

class YourModel(models.Model):
    TAG_FIELDS = {
        'tags': {
            'verbose_name': _('Tags'),
            'help_text': _('Help text'),
            'with_user': True,
        },
        'global_tags': {
            'verbose_name': _('Global Tags'),
            'with_user': False,
        }
    }

TAG_FIELDS是一本词典。字典里可以有 以下键:

  1. key在main dict中。这将是 数据库以及表单字段的名称。
  2. 详细名称。这将是表单字段的标签。如果没有提供 它将与name相同。
  3. help\u文本。这将是表单字段的帮助文本。
  4. ,用户。如果True,则被标记的项必须具有外键 给User对象或提供get_user方法。如果False我们 假设此项的标记是全局的。

接下来,您将为您的可标记模型创建一个ModelForm

from django import forms
from user_tags.forms import UserTagsFormMixin
from your_app.models import YourModel

class YourModelForm(UserTagsFormMixin, forms.ModelForm):
    class Meta:
        model = DummyModel

UserTagsFormMixin将为您提供魔力,并为 模型上TAG_FIELDS中的每个项目。这些字段将有一个类 tagItInput。此外,MIXIN将添加一种方法。 fieldname_tags_values到表单(对于每个标记字段),它将 返回该字段的可用标记:

<script type="text/javascript">
$(document).ready(function() {
    $("#id_fieldname").tagit({
        allowSpaces: true
        ,availableTags: {{ form.fieldname_tags_values|safe }}
        ,caseSensitive: false
    });
});
</script>

这只是一组我们喜欢使用的正常设置。你当然可以 根据你的喜好调整一下。见tag-it documentation 供进一步参考。

设置

如果出于某种原因,您的某个型号已经有外键 ContentType相关名称为user_tags_tagged_items您可以 使用此设置更改django-user-tags使用的相关名称。

默认值:“用户标记项”

贡献

如果您想参与此项目,请执行以下步骤:

# Fork this repository
# Clone your fork
$ mkvirtualenv -p python2.7 django-user-tags
$ pip install -r requirements.txt
$ ./user_tags/tests/runtests.sh
# You should get no failing tests

$ git co -b feature_branch master
# Implement your feature and tests
$ ./user_tags/tests/runtests.sh
# You should still get no failing tests
# Describe your change in the CHANGELOG.txt
$ git add . && git commit
$ git push origin feature_branch
# Send us a pull request for your feature branch

无论何时运行测试,都会在 tests/coverage/index.html。添加新功能时,请确保 你把保险范围保持在100%。

如果您正在进行需要在浏览器中测试的更改(即 css或js文件),您可能希望设置django项目,请按照 上面的安装说明,然后运行python setup.py develop。这个 只需在项目的virtualenv中放置一个到克隆叉的鸡蛋链接。

路线图

查看github上的问题跟踪程序,以了解未来的里程碑和功能。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在java中的字符串字符下打印星号(*)   java在比较数据后得到错误的结果   java如何在使用JSP创建的网站中创建父子关系和处理?   java配置单元UDF:无法执行求值方法   java GAE项目Intellij远程调试在关闭时不释放端口   java按钮上的放大和缩小功能点击JfreeChart折线图?   java Selenium Chrome Web驱动程序SessionNotCreatedException   java由ADFactoryBuilder生成的线程工厂是线程安全的吗?   java将字符串[]传递给另一个类Android(使用intent)   我为什么要嘲笑java?   JavaLiferay门户不将对象从流程阶段发送到jsp   java我想在单击每个树节点时将要添加的信息放入jpanel jscrollpane中   在Java中模拟数组引用(即对引用的引用)的按引用传递   Jackson将JSON属性反序列化为不同的Java对象   java使用JSP/servlet在网页上显示Excel工作表?   仿射变换Java:使用仿射变换时游戏速度减慢   Servlet JBoss AS 7的java EJB注入   在Oracle数据库中使用Java的plsql   java管理Maven项目中的库依赖项   JavaEclipseLink(JPA)异常:复合主键@JoinColumn