Я не веб-программист, поэтому, чем более информативен вы, тем лучше. Я пишу приложение django, которое позволит мне создавать, редактировать и просматривать файлы, написанные в уценке. Я использую стороннюю библиотеку "markdownx", чтобы дать мне тип формы представления (который я бы использовал в текстовом редакторе) для создания и редактирования файла уценки. Это инструмент для создания заметок, который я бы попытался использовать на следующих шагах ...
- Используя форму markdownx, я добавляю новую запись заметки за день, вводя всю необходимую информацию в каждое поле формы.
- Поскольку файл не существует, нажатие на кнопку отправки приведет к записи поля «содержимое» (которое имеет тип MarkdownxField ()) в файл.
или
- Используя форму markdownx (так же, как и выше), я добавляю еще одну запись заметки для дня, но на этот раз нужно только отредактировать поле 'content' в форме.
- Поскольку файл уже существует, я просто буду редактировать поле «содержимое» в форме, и после нажатия кнопки «Отправить» файл будет перезаписан вновь «отредактированным» полем «содержимое».
Я никогда не делал этого раньше, и мне не хватает времени, чтобы выяснить, как записать поля (полей) из моей модели (NotesModel, см. Ниже) в файл уценки. В частности, я хочу взять поле «content» моей модели, которое имеет тип «MarkdownxField ()», и записать его в файл.
1) Как записать поле «содержимое» в файл и где это делается в иерархии моего проекта (например, мои views.py?).
2) Я предполагаю, что мне придется создать другое поле для моей модели? Должно ли это иметь тип ContentFile () или FileField ()? *
примечания / admin.py
from django.contrib import admin
from django.db import models
from markdownx.admin import MarkdownxModelAdmin
from .models import NotesModel
admin.site.register(NotesModel, MarkdownxModelAdmin)
примечания / models.py
from django.db import models
from markdownx.models import MarkdownxField
from markdownx.utils import markdownify
from django.utils import timezone
class NotesModel(models.Model):
notes_type = models.CharField(max_length=100)
notes_memo = models.CharField(max_length=100)
author = models.CharField(max_length=100)
created_at = models.DateField(default=timezone.now)
# I'm guessing I'll need to add another field here?
# Perhaps something like...
# notes_file = models.FileField(upload_to='notes/')
content = MarkdownxField()
@property
def formatted_markdown(self):
return markdownify(self.content)
def __unicode__(self):
return self.notes_type
примечания / views.py
from django.shortcuts import render
from .models import NotesModel
def index(request):
notes = NotesModel.objects.all
return render(request, 'notes/notes.html', {'notes': notes,})
примечания / urls.py
from django.urls import path
from . import views
urlpatterns = [path('notes/', views.index, name='index'),]
примечания / шаблоны / примечание / base.html
<!DOCTYPE html>
<html>
<head>
<title>Notes</title>
</head>
<body>
{% block content %}{% endblock content %}
</body>
</html>
примечания / шаблоны / примечание / notes.html
{% extends "notes/base.html" %}
{% block content %}
{% csrf_token %}
{% for note in notes %}
<h1>Type: {{ note.notes_type }}</h1>
<h1>Author: {{ note.author }}</h1>
<h1>Created At: {{ note.created_at }}</h1>
<p>Memo: {{ note.notes_memo }}</p>
<p>{{ note.formatted_markdown|safe }}</p>
{% endfor %}
{% endblock %}
Ожидаемыми результатами будет файл, связанный с моделью заметок для каждого дня. Поэтому, я думаю, вы бы сказали, что у меня есть ссылка на NotesModel в моей базе данных для каждого дня, с которой связаны вышеуказанные поля, включая один файл "notes_file". Я бы хотел, чтобы этот файл был сохранен в моем проекте в папке типа «MyNoteFiles / year / month» ...
--projectfolder
----MyNoteFiles
------2019
--------Jan
----------Jan_1_2019.md
----------Jan_2_2019.md
--------Feb
----------Feb_1_2019.md
----settings.py
----urls.py
----(and so on...)
----notes
------templates/notes
--------(and so on...)
------admin.py
------apps.py
------models.py
------urls.py
------(and so on...)