Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django将旧url转换为新语法_Python_Django_Django Templates - Fatal编程技术网

Python Django将旧url转换为新语法

Python Django将旧url转换为新语法,python,django,django-templates,Python,Django,Django Templates,我正在尝试在我的项目中使用此应用程序: 但它有旧的url语法,我不知道如何将其转换为新的url语法。 我要转换的url: {% url favorite.views.add_or_remove target_model target_object_id %} 其确切形式为html: <button class="btn favorite" href="{% url 'favorite.views.add_or_remove' %}" model="{{ target_model }}"

我正在尝试在我的项目中使用此应用程序: 但它有旧的url语法,我不知道如何将其转换为新的url语法。 我要转换的url:

{% url favorite.views.add_or_remove target_model target_object_id %}
其确切形式为html:

<button class="btn favorite" href="{% url 'favorite.views.add_or_remove' %}" model="{{ target_model }}" id="target_{{ target_object_id }}">
它也不起作用。 它说:

我怎样才能解决这个问题?谢谢

编辑: 其模板标签有助于理解:

@register.simple_tag(takes_context=True)
def favorite_button(context, target):
    user = context['request'].user

    # do nothing when user isn't authenticated
    if not user.is_authenticated():
        return ''

    target_model = '.'.join((target._meta.app_label, target._meta.object_name))
    target_content_type = ContentType.objects.get_for_model(target)
    target_object_id = target.id
    fav_count = Favorite.objects.filter(target_content_type=target_content_type,
                                        target_object_id=target_object_id).count()
    undo = False
    if user.favorite_set.filter(target_content_type=target_content_type,
                                target_object_id=target_object_id):
        undo = True

    return render_to_string('favorite/button.html',
                            {'target_model': target_model, 'target_object_id': target_object_id,
                             'fav_count': fav_count, 'undo': undo})

URL没有参数:

url(r'^add-or-remove$', 'add_or_remove'),
{% url favorite.views.add_or_remove %}
这一观点也不成立:

def add_or_remove(request):
HTML中的URL标记也没有参数:

url(r'^add-or-remove$', 'add_or_remove'),
{% url favorite.views.add_or_remove %}
要将其转换为新语法,需要:

{% url 'favorite.views.add_or_remove' %}
之后,您可以使用自述文件中所述的模板标记:

{% load favorite_tags %}

{% for comment in post.comments %}
  {% favorite_button comment %}
{% endfor %}

由于该应用程序正在生产中使用(我们在其中使用了Django 1.4),因此我无法对该应用程序进行修补,使其与Django 1.5+兼容。但是有一个请求我对这种情况保持开放。这就是:它可能会解决问题。

我用html编辑了链接的确切形式。你也能考虑吗?