Архивы: Май 2012

UnicodeDecodeError django на windows 7

Пришлось мне тут по доле поработать на windows 7 со связкой Python/Django и сразу получил в консоль ошибки разного рода.

Одна из них

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)

Решается это просто. В реестре по ветке HKEY_CLASSES_ROOT\MIME\Database\Content Type есть куча подразделов и среди них есть которые названы кириллицей, просто переименуйте их в латиницу и будет Вам счастье.

Django youtube video template filter

Фильтр выковыривает ссылки из текста и вставляет как oembed объект. Можно задать длину-ширину опционально: {{ content|youtube:»320×240″ }} по дефолту 320×240.

# -*- coding: utf-8 -*-

from django.template.defaultfilters import stringfilter
from django import template
import re

register = template.Library()

@register.filter
@stringfilter
def youtube(url, size=None):
    regex = re.compile(r".*(http://)?(www\.)?(youtube\.com/watch\?)?v=(?P[A-Za-z0-9\-=_]{11})(\&)?.*", re.UNICODE)
    match = regex.match(url)
    if not match: return url
    video_id = match.group('id')
    
    video_w = "320"
    video_h = "240"
    if size and "x" in size:
        (video_w, video_h) = size.split('x')
    
    youtube_iframe = """
    <iframe src="http://www.youtube.com/embed/%s?fs=1&feature=oembed" frameborder="0" allowfullscreen width="%spx" height="%spx"></iframe>
    """ % (video_id, video_w, video_h)
    
    repl = re.compile(r"(http://)?(www\.)?(youtube\.com/watch\?v=)?(?P[A-Za-z0-9\-=_]{11}[^\b]*)", re.UNICODE)
    text = re.sub(repl, youtube_iframe, url)
    return text
youtube.is_safe = True # Don't escape HTML