Как интегрировать скрипт python в проект django
Итак, я очень новичок в программировании и застрял на этой проблеме, я использую python с Django и Mongodb для базы данных. Мне нужно написать сервис, который присваивает ID (не тот, который присваивает mongodb) при каждом отправлении формы пользователем. Например, ID записи 1 будет [Префикс, введенный пользователем] 2101, ID записи 2 будет [Префикс, введенный пользователем] 2102, так что это фактически добавляет число 2100. Я понятия не имею, как и куда интегрировать эту логику в моем коде. Я пробовал несколько решений в интернете, но ничего не работает.
мой код:
Model.py
class Writeups(Document):
blog_id = 2100
title = fields.StringField(max_length=120)
date_created = fields.DateField(blank=True, null=True)
date_modified = fields.DateField(blank=True, null=True)
version_number = fields.DecimalField(null= True , max_digits=1000, decimal_places=2)
storage_path = fields.StringField(max_length=120)
STRIKE_READY_BRIEF = 'SRB'
STRIKE_READY_THREAT_REPORT = 'SRTR'
PREFIX_CHOICES = [
(STRIKE_READY_BRIEF, 'SRB'),
(STRIKE_READY_THREAT_REPORT, 'SRTR'),
]
prefix = fields.StringField(
max_length=4,
choices=PREFIX_CHOICES,
null=False,
blank=False,
)
views.py:
@csrf_exempt def writeups_request(request):
"""
Writeup Request
"""
if request.method == 'GET':
try:
data = {
'form-TOTAL_FORMS': '1',
'form-INITIAL_FORMS': '0',
}
writeups = WriteupsFormset(data)
# print(writeup)
return render(request, "writeups/writeups.html", {'writeups_forms': writeups})
except Exception as e:
print(e)
response = {"error": "Error occurred"}
return JsonResponse(response, safe=False)
if request.method == 'POST':
writeup_data = WriteupsFormset(request.POST)
if writeup_data.is_valid():
flag = False
logs = []
for writeups_data in writeup_data:
print(writeups_data)
if writeups_data.cleaned_data.get('DELETE'): # and malware_data._should_delete_form(form):
continue
title = writeups_data.cleaned_data.get('title')
date_created = writeups_data.cleaned_data.get('date_created')
date_modified = writeups_data.cleaned_data.get('date_modified')
version_number = writeups_data.cleaned_data.get('version_number')
storage_path = writeups_data.cleaned_data.get('storage_path')
prefix = writeups_data.cleaned_data.get('prefix')
try:
writeups = Writeups(),
title=title,
date_created=date_created,
date_modified=date_modified,
version_number=version_number,
storage_path=storage_path,
prefix=prefix)
writeups.save()
Для того чтобы реализовать ваш пользовательский сценарий на всех представлениях, Signals в Django являются решением для вашего случая использования. Изучите сигналы post_save и pre-save и используйте их в соответствии с вашей проблемой.
https://docs.djangoproject.com/en/3.2/ref/signals/
Если у вас есть существующая база данных и вам нужен скрипт, который будет итерационно просматривать ее и обновлять набор данных, вы можете взглянуть на Management Commands
https://docs.djangoproject.com/en/4.0/howto/custom-management-commands/