跳转到主要内容

一个简单的Django应用,可以在您的网站上使用表情符号

项目描述

https://travis-ci.org/gaqzi/django-emoji.png?branch=master https://coveralls.io/repos/gaqzi/django-emoji/badge.png Latest Version Python versions Package status

Emoji是将GitHub gem gemoji移植到Django的。

此应用有两个主要用途

  1. 它会尝试用表情符号替换 :: 之间的项,例如 : dog :(没有空格)将变成一只狗的表情符号(:dog:)。

  2. 它会尝试用表情符号替换Unicode字符,例如‘✌️’将变成胜利符号(:v:)。

版本2发布

感谢Tim Schilling,我们现在启用了与Django核心相同的逻辑的自动转义。由于这可能对该应用的用户造成破坏性更改,因此已增加主版本号。除了过滤器外,还增加了Django的标准XSS保护,没有其他更改。

要获取应用的旧行为,请将过滤器这样包装:

{% autoescape off %}
{{ emoji|emoji_replace }}
{% endautoescape %}

快速开始

  1. 从PyPi安装django-emoji <https://pypi.python.org/pypi/django-emoji>

    pip install django-emoji
  2. 将“emoji”添加到您的INSTALLED_APPS设置中,如下所示

    INSTALLED_APPS = (
        ...
        'emoji',
    )
  3. 如果您想获取emoji的JSON列表,请将emoji URLconf包含在项目urls.py中,如下所示

    url(r'^emoji/', include('emoji.urls')),
  4. 访问http://127.0.0.1:8000/emoji/all.json以获取包含所有可用emoji的json对象

Python版本

支持Django 1.5、1.6、1.7、1.8和1.9及其各自的Python 2/3支持版本。

设置

以下是在您的settings.py中可以配置的设置

设置名称

描述

EMOJI_IMG_TAG

在将emoji转换为图片时用于创建<img>标签的模板字符串。默认值:<img src="{0}" alt="{1}" title="{2}" class="emoji">

EMOJI_ALT_AS_UNICODE

是否将对应于emoji的unicode字符作为alt文本放入replace_unicode。默认值:True

EMOJI_REPLACE_HTML_ENTITIES

是否自动将HTML编码的unicode字符转换为emoji。默认值:True

用法

API

Python

Python类Emoji是一个单例,实例化之间将返回相同的实例。加载Emoji时,它将所有emoji的名称及其unicode等效字符加载到内存中。

调用

描述

Emoji.names()

所有已知emoji的列表

Emoji.replace(replacement_string)

替换所有::样式emoji

Emoji.name_for(character)

给定unicode字符的名称

Emoji.replace_unicode(replacement_string)

替换所有已知unicode emoji

Emoji.replace_html_entities(replacement_string)

替换所有HTML编码的unicode字符

JavaScript

浏览器版本将所有emoji缓存到localStorage中,因此不需要多次往返服务器以获取emoji列表。

注意:依赖于jQuery或其他导出$.get的库。

调用

描述

Emoji.setDataUrl(url)

获取所有可用emoji列表的位置

Emoji.load()

从服务器加载所有emoji

Emoji.get(/*emoji*/)

获取名为emoji的URL或返回所有已知emoji的名称

Emoji.replace(replacementString)

将所有::样式emoji替换为图片

Emoji.clear()

清空浏览器缓存

示例

通过在模板中加载标签使用Python模板替换emoji

{% load emoji_tags %}
{{ blog_post.body|emoji_replace }}
{{ blog_post.body|emoji_replace_unicode }}
{{ blog_post.body|emoji_replace_html_entities }}

使用JavaScript替换emoji(例如,在用户保存他们所写内容之前显示预览)

{% load emoji_tags %}

<script src="{% static 'emoji/js/emoji.js' %}"></script>
{% emoji_load %}

Emoji.get('dog') // => url stub to dog emoji or falsy
Emoji.get() // => all emojis available

Emoji.replace("It's raining :cats: and :dogs:.") // => It's raining <img src="..." alt="cats" class="emoji"> and <img src="..." alt="dogs" class="emoji">

emoji_load的作用是设置检索所有可用emoji列表的端点,因此仅在包含emoji URL时才有效。

它等效于执行以下操作

Emoji.setDataUrl('{% url 'emoji:list.json' %}').load();

它也作为模板占位符提供

{% include 'emoji/script.html' %}

从Python内部使用,其中Emoji类模拟了字典的一些行为

from emoji import Emoji
Emoji['dog'] # => url stub to dog emoji or None
'dog' in Emoji # => True
Emoji.keys() # => a list of all emojis by name
Emoji.replace("It's raining :cats: and :dogs:") # => It's raining <img src="..." alt="cats" class="emoji"> and <img src="..." alt="dogs" class="emoji">

替换unicode emoji

Emoji具有从unicode字符获取emoji名称的能力。它还可以将字符串中emoji字符的每个实例替换为其图像替代品。

用法

>>> from emoji import Emoji
>>> Emoji.name_for(u'\U000148b')
kiss
>>> Emoji.replace_unicode(u'I send a \U0001f48b!')
I send a <img src="/static/emoji/img/kiss.png" alt="kiss" class="emoji">

注意:

为了最佳使用Unicode替换,请使用支持宽字符的Python构建版本。从版本1.2开始,添加了处理Unicode代理对的代码,它应该能在窄构建上很好地工作。但是,这尚未在生产环境中进行测试,因此请仔细尝试。请报告发现的任何错误。

要测试您是否安装了Python的窄或宽版本,请运行以下命令,如果您遇到异常,则表示您正在运行窄版本。

>>> print(unichr(0x0001f48b))
ValueError: unichr() arg not in range(0x10000) (narrow Python build)

项目详情


下载文件

下载适用于您平台的电影文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源代码分布

django-emoji-2.2.2.tar.gz (4.1 MB 查看哈希值)

上传时间 源代码

构建分布

django_emoji-2.2.2-py2.py3-none-any.whl (4.3 MB 查看哈希值)

上传时间 Python 2 Python 3

支持者