Отредактируйте .htaccess из админки Django - PullRequest
1 голос
/ 14 июня 2009

Я блокирую определенные рефереры в моем файле .htacccess, чтобы не показывать изображения на варез-сайтах. Изображения передаются напрямую, поэтому Django их не трогает, и я бы хотел сохранить их в таком виде из-за производительности.

Но я хотел бы иметь возможность добавлять больше заблокированных сайтов в список внутри файла .htaccess с помощью администратора Django, не используя FTP или SVN для доступа к сайту. Это возможно? Как?

Ответы [ 5 ]

3 голосов
/ 27 июня 2009

Вы можете создать модель, которая определяет все настраиваемые части .htaccess; затем добавьте сигнал ( django doc ) при каждом сохранении, чтобы вызвать функцию, которая будет писать новый .htaccess на основе того, что было определено в базе данных. Примерно так (как обычно, это непроверенный код!):

class HtAccessExclusion(models.Model):
    exclusion = models.CharField(max_length=300)

from django.db.models.signals import post_save

def export_on_htaccess(sender, **kwargs):
    # write "standard" part of htaccess
    # use the content of HtAccessExclusion table to write all specific exclusions
    ...

post_save.connect(export_on_htaccess, sender=HtAccessExclusion)
2 голосов
/ 27 июня 2009

Возможно, вам будет проще использовать некоторый mod_rewrite voodoo и использовать RewriteMap для хранения списка сайтов, которые нужно заблокировать с условием перезаписи для проверки карты. Преимущество в том, что в файле карты будет только список сайтов, поэтому его обновление будет проще. Файл карты также будет автоматически перезагружен Apache после его обновления. Возможно, вам придется разместить правила перезаписи для этого в основной конфигурации Apache.

1 голос
/ 14 июня 2009

Не знаю, упускаю ли я что-то здесь, но разве не так?

def add_to_htaccess(line):
    htaccess = open("/path/to/.htaccess", "a")
    htaccess.write(line+"\n")
    htaccess.close()
0 голосов
/ 15 июня 2009

Написать пользовательское приложение, но повторно использовать шаблоны администратора:

{% extends "admin/base_site.html" %}
{% load adminmedia %}

{% block coltype %}flex{% endblock %}
{% block bodyclass %}change-list{% endblock %}

{% block breadcrumbs %}<div class="breadcrumbs"><a href="/admin/">Home</a>&nbsp;&rsaquo;&nbsp;{{page_title}}</div>{% endblock %}
{% block content %}
....Your code here....
{% endblock %}

Добавьте его к своим URL-адресам перед URL-адресами администраторов и ко всем намерениям и целям - это часть администраторов. Вы можете настроить ваши шаблоны администратора, чтобы включить ссылки на них в инструментах объектов или в главном меню, если хотите.

0 голосов
/ 14 июня 2009

Вам может быть довольно сложно сделать это из приложения администратора, но вы, вероятно, можете сделать приложение самостоятельно, чтобы сделать это с дюжиной строк кода, плюс еще несколько для шаблонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...