Как отправить данные с помощью электронной почты из административного интерфейса Django?

Как можно добавить функционал в административный раздел проекта Django для экспорта данных модели факультатива в компьютер или по электронной почте с возможностью указания адреса электронной почты для получения данных?
  • 15 марта 2024 г. 10:49
Ответы на вопрос 2
Для отправки данных с помощью электронной почты из административного интерфейса Django, вы можете использовать встроенную библиотеку Python `smtplib`. 

Пример кода для отправки данных с помощью электронной почты из административного раздела Django:

```python
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email(subject, body, to_email):
    email = '[email protected]'
    password = 'your_password'
    
    msg = MIMEMultipart()
    msg['From'] = email
    msg['To'] = to_email
    msg['Subject'] = subject
    
    msg.attach(MIMEText(body, 'plain'))
    
    server = smtplib.SMTP('smtp.example.com', 587)
    server.starttls()
    server.login(email, password)
    text = msg.as_string()
    server.sendmail(email, to_email, text)
    server.quit()
```

Чтобы добавить функционал в административный раздел проекта Django для экспорта данных модели факультатива, вы можете создать кастомное действие (action) и использовать его для экспорта данных. 

Пример кода для добавления кастомного действия в Django административный раздел:

```python
from django.contrib import admin
from .models import Facultative
from django.http import HttpResponse
import csv

def export_facultatives(modeladmin, request, queryset):
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="facultatives.csv"'

    writer = csv.writer(response)
    writer.writerow(['Name', 'Description', 'Teacher'])

    for facultative in queryset:
        writer.writerow([facultative.name, facultative.description, facultative.teacher])

    return response

export_facultatives.short_description = 'Export selected facultatives'

class FacultativeAdmin(admin.ModelAdmin):
    list_display = ('name', 'description', 'teacher')
    actions = [export_facultatives]

admin.site.register(Facultative, FacultativeAdmin)
```

Теперь в административном разделе Django вы увидите опцию "Export selected facultatives", которая позволит вам экспортировать выбранные факультативы в формате CSV. Вам также следует добавить функционал отправки этого CSV-файла по электронной почте, используя ранее написанный метод `send_email`.
Давай за тебя открою и почитаю доки. На первый взгляд, https://django-import-export.readthedocs.io/en/lat... место где ты указываешь свою форму с выбором, а https://django-import-export.readthedocs.io/en/lat... и https://django-import-export.readthedocs.io/en/lat... места, где ты можешь попытаться отправить на почту
Похожие вопросы