2016-07-12 2 views
1

Для одного из приложений я перегружаю метод «удалить выбранные объекты» в проекте Django 1.9.x, который использует панель администратора. Для этого у меня есть код, подобный этому:RemovedInDjango110Warning: аргумент context_instance для render_to_string устарел

from django.contrib.admin import helpers 
from django.http import HttpResponseRedirect 
from django.shortcuts import render_to_response 
from django.template import RequestContext 

class MAdmin(admin.ModelAdmin): 
    actions = ['delete_selected'] 

    def delete_selected(self, request, queryset): 
     if 'apply' in request.POST: 
      # User has confirmed deletion of items 
      return HttpResponseRedirect(request.get_full_path()) 
     else: 
      # User must confirm if they wish to delete selected items 
      return render_to_response('admin/confirm_delete.html', { 'queryset': queryset, 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME }, context_instance=RequestContext(request)) 

Последняя строка производит следующее предупреждение в консоли:

.../virtualenv/Lib/python2.7/сайт-пакеты /django/shortcuts.py:45: RemovedInDjango110Warning: Аргумент context_instance для render_to_string устарел. using = using)

Я попытался найти какой-то ресурс, объясняющий, как «обновить» синтаксис в соответствии с версией 1.10.x, но мне не удалось.

Схожие вопросы уже заданы here, но это немного отличается, так как OP вызывает render_to_string явно, а я нет.

Как обновить вызов выше, чтобы предупреждение исчезло?

ответ

2

Да, «правильный» способ исправить это означает его обновление. Согласно documentation, they recommend using render()

DEPRECATED начиная с версии 1.8: context_instance аргумент является устаревшим. Вместо этого используйте функцию render(), которая всегда делает доступным RequestContext.

Если вы хотите подавить это предупреждение (крайне не рекомендуется), вы можете использовать настройку SILENCE_SYSTEM_CHECK.

More on the system check can be found here

+0

Обратите внимание, что это предупреждение Python, а не проверка системы Django. Чтобы добавить фильтр и игнорировать предупреждение, вам необходимо использовать [модуль предупреждений] (https://docs.python.org/3/library/warnings.html#the-warnings-filter). – knbk

+0

Если это действительно неизбежно, я предпочитаю не останавливать оповещения, так как это в основном устраняет проблему. Я бы попробовал и вернусь. – nKn

+0

Корректно, подавляя эти ошибки, заставляя поддерживать цикл обновления кошмаром. – karthikr

Смежные вопросы