Django: Могу ли я добавить заголовок noindex к ответу redirect?
Я могу использовать robots.txt и пользовательское промежуточное ПО Django, но мне хотелось бы знать, можно ли это сделать на уровне представления.
3 ответа
Поскольку вы, вероятно, будете делать это довольно часто, вы можете превратить его в декоратор.
декораторы.py
def robots(content="noindex, nofollow"):
def _method_wrapper(func):
@wraps(func)
def wrap(request, *args, **kwargs):
response = func(request, *args, **kwargs)
response['X-Robots-Tag'] = content
return response
return wrap
return _method_wrapper
просмотры.py
from .decorators import robots
@robots("noindex")
def something(request):
return HttpResponse("")
@robots("all")
def something_else(request):
return HttpResponse("")
Если вы используете представления на основе классов, вы также можете создать миксин:
mixins.py
class NoIndexRobotsMixin:
def dispatch(self, request, *args, **kwargs):
response = super().dispatch(request, *args, **kwargs)
response['X-Robots-Tag'] = 'noindex'
return response
просмотры.py
class MyView(NoIndexRobotsMixin, generic.View):
pass
Вы можете добавить тег noindex, используя следующий фрагмент:
from django.http import HttpResponse
response = HttpResponse("Text only, please.", content_type="text/plain")
response['X-Robots-Tag'] = 'noindex'
return response