Форум сайта python.su
1
Есть интернет-магазин на Django у которого имеется файл create_yml.py , который генерит прайс для Яндекс маркета market.xml и кладет его в папку /yml/.
Скрипт взывается из консоли командой: “MySite/manage.py create_yml > /yml/market.xml”.
Как сделать в админке ( admin/index.html ) гиперссылку, по нажатии которой будет выполняться вышеуказанная команда ( create_yml > /yml/market.xml ).
Да простят ветераны форума мой нубский вопрос
Что такое urls.py и views.py я знаю, но, увы , моих знаний недостаточно, чтобы решить эту проблему. Заранее спасибо за помощь.
Офлайн
22
Вызов внешней программы из питона:
import subprocess proc = subprocess.run("python MySite/manage.py create_yml > /yml/market.xml", shell=True)
Как сделать в админке ( admin/index.html ) гиперссылкуЕсли имеется ввиду встроенная джанговская админка, то не знаю, я её менять никогда не пытался. Если же это некая ваша собственная админка, то всё так же, как и для обычных ссылок: добавляем урл в urls.py, создаём отдельную view-функцию с вызовом скрипта, добавляем ссылку в шаблон.
Отредактировано Striver (Сен. 30, 2019 09:08:12)
Офлайн
1
Striver, спасибо за помощь, хотя вопрос был немного в другом, навели на мысль как сделать “в лоб”. Оставляю это тут это для будущих нубов: “Как запустить питоновский скрипт, который не рендерит страницу, а просто выполняет определенную функцию (на примере гиперссылки из админки)”.
Добавляем в файл /admin/index.html:
<a style="display: block;" href="/admin/generate_yml/">Обновить Yandex.xml</a>
url(r'^admin/generate_yml/', views.generate_yml, name='generate_yml'),
def generate_yml(self): from app.management.commands.create_yml_helper import generate_yml from django.http import HttpResponse generate_yml() return HttpResponse("Yandex price created Successfully!")
import os # Файл на Python запускает команду оболочки Linux def generate_yml(self): try: command = 'YOUR_OWN_PATH/venv/bin/python YOUR_OWN_PATH/manage.py create_yml > your_own_path/yml/market.xml' # Тут м.б. любая команда os.system(command) except: print('Ошибка генерации Ya Xml')
Офлайн
0
Уважаемый dvadim!
dvadimА поделитесь, по-братски, вот этим самым create_yml.py! Буду премного вам благодарен!
интернет-магазин на Django у которого имеется файл create_yml.py
Отредактировано kalkerre (Июнь 8, 2020 17:34:56)
Офлайн
1
kalkerreДержите (файл прикрепляю).
Уважаемый dvadim!
Прикреплённый файлы:
create_yml.py (3,6 KБ)
Офлайн
0
dvadimБлагодарю!
Офлайн