Бок о бок ошибка конфигурации (Microsoft. VC80. CRT v8.0.50608.0)

Это возможно и довольно просто.

Django только позволяет один аргумент Вашему фильтру, но нет никакой причины, Вы не можете поместить все свои аргументы в единственную строку с помощью запятой для разделения их.

Так, например, если Вы хотите фильтр, который проверяет, находится ли переменная X в списке [1,2,3,4], Вы захотите шаблонный фильтр, который похож на это:

{% if X|is_in:"1,2,3,4" %}

Теперь мы можем создать Ваш templatetag как это:

from django.template import Library

register = Library()

def is_in(var, args):
    if args is None:
        return False
    arg_list = [arg.strip() for arg in args.split(',')]
    return var in arg_list

register.filter(is_in)

строка, которая создает arg_list, является выражением генератора, которое разделяет строку args на всех запятых и называет .strip () для удаления любого продвижения и конечных пробелов.

, Если, например, 3-м аргументом является интервал тогда просто, сделайте:

arg_list[2] = int(arg_list[2])

Или если все они - ints, сделайте:

arg_list = [int(arg) for arg in args.split(',')]

РЕДАКТИРОВАНИЕ: теперь для специфического ответа на вопрос при помощи ключа оцените пар как параметры, можно использовать тот же класс использование Django для парсинга строк запроса из URL, который тогда также обладает преимуществом обработки кодировки символов правильно согласно settings.py.

Так, как со строками запроса, каждый параметр разделяется '&';:

{{ attr.name|replace:"cherche=_&remplacement= " }}

Тогда Ваша функция замены будет теперь похожа на это:

from django import template
from django.http import QueryDict

register = template.Library()

@register.filter
def replace(value, args):
    qs = QueryDict(args)
    if qs.has_key('cherche') and qs.has_key('remplacement'):
        return value.replace(qs['cherche'], qs['remplacement'])
    else:
        return value

Вы могли ускорить это некоторые рискуя тем, чтобы делать некоторые неправильные замены:

qs = QueryDict(args)
return value.replace(qs.get('cherche',''), qs.get('remplacement',''))
5
задан Justin 14 September 2009 в 10:10
поделиться

1 ответ

Сортировано!

Кто-то любезно указал мне, что "SomeAssembly.dll", упомянутый в Dependency Walker, на самом деле была другой dll, чем та, которую я открыл в Dependency Walker! (Упс!)

Глядя на манифест для этой сборки, я вижу, что проблема связана с тем, что Microsoft.VC80.CRT v8.0.50727.4053 нацелен, но отсутствует на этой машине. (Устанавливается через обновление безопасности).

2
ответ дан 14 December 2019 в 13:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: