Python Django将旧url转换为新语法
我正在尝试在我的项目中使用此应用程序: 但它有旧的url语法,我不知道如何将其转换为新的url语法。 我要转换的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 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编辑了链接的确切形式。你也能考虑吗?