Я хочу создать повторно используемую функцию в Django

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

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

Цель состоит в том, чтобы создать функцию отправки почты с использованием стороннего API и вызывать ее из любой точки моего приложения, просто передавая необходимые параметры.

3 ответа

Предполагая, что у вас есть одно приложение django в вашем проекте, вы можете определить все ваши повторно используемые методы внутри methods.py файл в папке вашего приложения, а затем импортируйте его, чтобы использовать функции.

Если у вас есть несколько приложений, то определите создать это methods.py в одном из ваших приложений. Теперь допустим, что имя вашего проекта coolprojectname и название приложения, которое имеет methods.py является appwithmethodsscriptтогда вы можете использовать

from coolprojectname.appwithmethodsscript import methods

Ссылка

Джанго следует правилам питона.

Таким образом, вы можете определить функцию в любом месте и импортировать ее, где вы хотите ее использовать.

Единственное условие для того, чтобы это работало, - чтобы ваши пакеты следовали правильной структуре (то есть каталогу, который имеет __init__.py файл)

          from django.db import models
from django.contrib.auth.models import User


class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    voted = models.BooleanField(default=False)

    def __str__(self):
        return self.user.username


class Position(models.Model):
    position = models.CharField(max_length=50)
    no_of_candidates = models.IntegerField(default=0)
    about = models.TextField(default='')

    def __str__(self):
        return self.position


class Candidate(models.Model):
    candidate = models.ForeignKey(Position, on_delete=models.CASCADE)

    name = models.CharField(max_length=50)
    Description = models.TextField()
    image = models.ImageField(upload_to='Vote/static/Vote', blank=True)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.name
Другие вопросы по тегам