我不是网络程序员,所以描述性越强越好。我正在编写django应用程序,它将允许我创建,编辑和查看以markdown编写的文件。我使用的是第三方库“ markdownx”,基本上是给我一种视图的表单类型(我将以某种文本编辑器的方式使用)来创建和编辑markdown文件。这是一个记笔记工具,我将在以下步骤中尝试使用它...
或
我以前从未做过,而且我很费力地弄清楚如何将模型中的字段(NotesModel,请参见下文)写入markdown文件。具体来说,我想获取模型的“内容”字段(类型为“ MarkdownxField()”)并将其写入文件。
1)如何将“内容”字段写入文件,这在我的项目层次结构中是如何完成的(例如,我的views.py?)。
2)我假设我必须为模型创建另一个字段?应该是“ ContentFile()”还是“ FileField()”类型?
from django.contrib import admin
from django.db import models
from markdownx.admin import MarkdownxModelAdmin
from .models import NotesModel
admin.site.register(NotesModel, MarkdownxModelAdmin)
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
from django.shortcuts import render
from .models import NotesModel
def index(request):
notes = NotesModel.objects.all
return render(request, 'notes/notes.html', {'notes': notes,})
from django.urls import path
from . import views
urlpatterns = [path('notes/', views.index, name='index'),]
<!DOCTYPE html>
<html>
<head>
<title>Notes</title>
</head>
<body>
{% block content %}{% endblock content %}
</body>
</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...)