Я новичок в python и django (как вы, наверное, догадались).
Я следую за веб-курсом CS50 и пытаюсь разрешить пользователю редактировать текущий заголовок и содержимое страницы. Проблема в том, что текущий контент не отображается.
Мы еще не работаем с базами данных или сеансами. Запись - это в основном заголовок + контент на любом топе c.
form.py:
from django import forms
class NewEntryForm(forms.Form):
title = forms.CharField(label="Title", required=True, max_length=100)
content = forms.CharField(label="Content", widget=forms.Textarea, required=True, max_length=1000)
views.py, где он не работает:
def edit_entry(request, title):
try:
content = util.get_entry(title) #store content of the entry
except:
return HttpResponseNotFound("Page not found")
form = NewEntryForm()
form.content = content
return render(request, "encyclopedia/new_entry.html", {
"form": form, #to create the displayed form
"form.content": form.content, "form.title": title, #to fill the form with the stored info
"title": title.capitalize(), "messages": None, #page title & warning messages
})
тот же шаблон для создания и редактирования записи:
{% extends "encyclopedia/layout.html" %}
{% block title %}
{{ title }}
{% endblock %}
{% block body %}
{% if messages %}
<div class="alert alert-warning" role="alert">
{{ messages }}
</div>
{% endif %}
<div class="content-section" style=" margin: auto; width: 50%; padding: 10px;">
<form method="POST" action="{% url 'edit_entry' title%}">
{% csrf_token %}
{{ form.title.label }}
{{ form.title }}
{{ form.content.label}}
{{ form.content }}
<input type="submit" value="Submit">
</form>
</div>
{% endblock %}
util.py:
def get_entry(title):
"""
Retrieves an encyclopedia entry by its title. If no such
entry exists, the function returns None.
"""
try:
f = default_storage.open(f"entries/{title}.md")
return f.read().decode("utf-8")
except FileNotFoundError:
return None