Условное промежуточное ПО Django (или как исключить систему администратора)

Можно использовать std::regex.

В зависимости от размера вашего файла и доступной вам памяти, можно прочитать его либо по строкам, либо целиком в файле std::string.

Чтобы прочитать файл , вы можете использовать:

std::ifstream t("file.txt");
std::string sin((std::istreambuf_iterator(t)),
                 std::istreambuf_iterator());

, после чего вы можете сопоставить это, которое на самом деле настраивается для ваших нужд.

std::regex word_regex(",\\s]+");
auto what = 
    std::sregex_iterator(sin.begin(), sin.end(), word_regex);
auto wend = std::sregex_iterator();

std::vector v;
for (;what!=wend ; wend) {
    std::smatch match = *what;
    v.push_back(match.str());
}

16
задан user127032 22 June 2009 в 16:03
поделиться

3 ответа

Вы можете проверить путь в process_request (и любых других методах process _ * - в вашем промежуточном программном обеспечении)

def process_request(self, request):
    if request.path.startswith('/admin/'):
        return None
    # rest of method

def process_response(self, request, response):
    if request.path.startswith('/admin/'):
        return response
    # rest of method
7
ответ дан 30 November 2019 в 16:50
поделиться

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

Для другого промежуточного программного обеспечения, где это было бы неудобно, я, вероятно, буду использовать описанный выше метод piquadrat, или, может быть, просто использовать декоратор вида - Cheers piquadrat!

0
ответ дан 30 November 2019 в 16:50
поделиться

Общий способ будет (на основе ответа piquadrat)

def process_request(self, request):
    if request.path.startswith(reverse('admin:index')):
        return None
    # rest of method

Таким образом, если кто-то изменит / admin / на / django_admin / вы все еще прикрыты.

29
ответ дан 30 November 2019 в 16:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: