#django #linux #server #permissions #overwrite
#джанго #линукс #сервер #разрешения #переписывать
Вопрос:
Хорошего всем свидания. У меня есть проект django, запущенный на сервере Linux с apache2. Что делает мой код, так это заменяет файл PDF. Когда пользователь заполнит форму, она будет получена, затем замените соответствующие поля в файле и сохраните() ее. Локально он работает отлично, но когда я пробую его на сервере, pdf-файл не перезаписывается, потому что он всегда отображает один и тот же PDF-файл вместо измененного.
Поскольку локально работает правильно, я подумал, что, возможно, это будут маршруты или разрешения. Первый вариант я уже проверил по маршрутам, они правильные, так что этого не должно быть. Еще одна вещь, которую можно не разрешать перезаписывать, — это разрешения, поэтому я сделал то, что дал разрешения chmod 777 для файла PDF, чтобы посмотреть, работает ли он, но этого не произошло. Это все равно файл не меняется.
Этот код предназначен для добавления соответствующих полей в PDF-файл
def generate_attached_standard_pdf(attachment_data): try: name=attachment_data['creditor'] w, h = letter # DEFINE PDF CONFIGURATIONS c = canvas.Canvas('anexoA.pdf', pagesize=letter) c.setTitle('Anexo {}'.format(name)) pdfmetrics.registerFont( TTFont('Lato', BASE_DIR "/recursos/fonts/Lato-Regular.ttf"), ) pdfmetrics.registerFont( TTFont('Lato-Bold', BASE_DIR "/recursos/fonts/Lato-Bold.ttf"), ) c.save() return { 'success': True, 'message': 'PDF CREADO' } except Exception as e: print(e) return { 'success': False, 'message': e }
Этот другой код относится к views.py
if form.is_valid(): ctx = { 'form': form, 'pay_method':pay_method, 'payment_date':payment_date, 'principal_payment_date':principal_payment_date, 'return_end_date':return_end_date, 'creditor':creditor, 'contract_date':contract_date, 'days':days, 'amount':amount, 'rate':rate,'credit_2':credit_2,} print(pay_method) if pay_method == 'e': AttachedPdf.generate_attached_standard_pdf(attachment_data=ctx) else: AttachedPdf.generate_attached_dynamic_pdf(attachment_data=ctx) with open('/Server/django-project/anexoA.pdf', 'rb') as pdf: response = HttpResponse(pdf.read(),content_type='application/pdf') response['Content-Disposition'] = 'filename=some_file.pdf' return response
Большое спасибо.
Я нашел ошибку, это разрешения. Я использую apache2.
Когда я получил доступ к журналу/apache2/error.log, появилось это сообщение: [Errno 13] Отказано в разрешении: «файл.pdf» файл.pdf-это тот, который я пытаюсь переписать.
Я изменил разрешения для этого файла на 777, а также папку, в которой находится этот файл. Я не знаю, что еще это может быть
Комментарии:
1. О, извини, хе-хе. Что я сделал, так это просто загрузил pdf-файл. Затем, когда он уже находится на сервере, я только пытаюсь открыть pdf-файл с кодом, переписать несколько слов и сохранить pdf-файл, и все. Локально это работает отлично, но на сервере он не открывает pdf или что-то в этом роде, я полагаю, это разрешения или что-то в этом роде.