Настроить пакет Python - django-paypal

Я работаю над проектом, в котором мне нужно внести некоторые изменения в пакет джанго-пайпал. Я клонировал репозиторий GitHub пакета и сделал очень простое изменение (Просто измените тип отправки формы = источник изображения), а затем установил его через python setup.py install, но теперь я не смог найти никакого пути для импорта этого пакета.

Например, когда я установил его с помощью pip install django-paypal, я смог импортировать его как from paypal.standard.forms import PayPalPaymentsForm, но после установки через python setup.py install из моего локального измененного источника он не смог найти ни одного пакета paypal.

Как я могу исправить эту проблему?

Помоги мне, пожалуйста!

Заранее спасибо!

Вы не можете настроить это с помощью параметра? django-paypal.readthedocs.io/en/stable/…

Blender 10.03.2018 06:40

Привет, @Blender, это был всего лишь пример, когда мне нужно внести различные изменения, например, мне также нужно добавить target = "_blank" в PaypalPaymentsForm.

Abdul Rehman 10.03.2018 06:43

Я бы просто создал подкласс PaypalPaymentsForm и переопределил метод render(), чтобы вернуть измененный HTML. Если вы не вносите тонны обширных изменений в основные функции, вы обычно не хотите поддерживать свою собственную копию пакета. Это затруднит обновление.

Blender 10.03.2018 06:45

звучит хорошо, не могли бы вы немного рассказать, как я могу переопределить метод рендеринга? пожалуйста!

Abdul Rehman 10.03.2018 06:49
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
95
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Вместо того, чтобы изменять строку, возвращаемую PayPalPaymentsForm.render, просто подклассифицируйте ее и измените метод render, чтобы вернуть нужный HTML:

your_app/forms.py

from django.utils.html import format_html
from paypal.standard.forms import PayPalPaymentsForm

class CustomPayPalPaymentsForm(PayPalPaymentsForm):
    def render(self):
        return format_html(u"""<form action = "{0}" method = "post">
    {1}
    <input type = "image" src = "{2}" border = "0" name = "submit" alt = "Buy it Now" />
</form>""", self.get_endpoint(), self.as_p(), self.get_image())

Затем вы просто импортируете его:

from your_app.forms import CustomPayPalPaymentsForm

Привет, @Blender, можешь взглянуть на этот вопрос? stackoverflow.com/q/49197631/7644562 пожалуйста!

Abdul Rehman 10.03.2018 07:05

@AbdulRehman: Думаю, было бы проще пользоваться электронной почтой. IPN PayPal может иметь задержки, и привязка этого к приложению реального времени в Интернете может не сработать.

Blender 10.03.2018 07:13

Привет, @Blender, вы имели в виду, что я должен отправить файл pdf пользователю по электронной почте после успешной оплаты?

Abdul Rehman 10.03.2018 07:15

@AbdulRehman: Да. Если вы не можете гарантировать немедленный ответ от PayPal, электронная почта кажется самым простым компромиссом.

Blender 10.03.2018 07:17

Как я могу этого добиться? Мне нужно создать PDF-файл из шаблона Django. Вы можете мне помочь с этим? пожалуйста!

Abdul Rehman 10.03.2018 07:20

@AbdulRehman: Извините, я никогда не работал с генерацией PDF, поэтому я не могу здесь сильно помочь. Я уверен, что для этого существует множество модулей Python.

Blender 10.03.2018 07:23

Другие вопросы по теме