Function ‘title’ fetch the initial value of ‘textarea’ in a form, edit it and should ‘save’ it.
Information is saved but everytime a new line is added and form gets bigger and bigger.
Here is the HTML code.
<form action="{% url 'encyclopedia:title' title=title %}" method="POST">
{% csrf_token %}
{{form}}
<input type="submit" value="Save">
</form>
Function definitions in view:
from django.shortcuts import render
import random
from . import util
from django.urls import reverse
from django.http import HttpResponseRedirect
from markdown2 import Markdown
from django import forms
from django.http import HttpResponse
from django.http import request
markdowner = Markdown()
class CreateForm(forms.Form):
Title = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Title'}))
Content = forms.CharField(widget=forms.Textarea(attrs={"rows":3, "cols":10}))
class Edit(forms.Form):
textarea = forms.CharField(widget=forms.Textarea(), label='')
def index(request):
return render(request, "encyclopedia/index.html", {
"entries": util.list_entries()
})
#Present the page as per the title in the url
def title(request,title):
if request.method == 'POST':
form = Edit(request.POST)
if form.is_valid():
textarea = form.cleaned_data["textarea"]
util.save_entry(title,textarea)
return HttpResponseRedirect(reverse("encyclopedia:title", args=(title,)))
else:
return render(request,"encyclopedia/title.html",{"Content": markdowner.convert(util.get_entry(title)),"title":title})
def create(request):
if request.method == 'POST':
form = CreateForm(request.POST)
if form.is_valid():
Title = form.cleaned_data["Title"]
Content = form.cleaned_data["Content"]
if Title.lower() in util.list_entries() or Title.upper() in util.list_entries() or Title in util.list_entries():
return render(request,"encyclopedia/title.html",{"Content": "Title already exists","error":True})
else:
util.save_entry(Title,Content)
title= Title
#Content=markdowner.convert(util.get_entry(Title))
#return render(request,"encyclopedia/title.html",{"Title": Title, "Content": page_html, "error":False})
return HttpResponseRedirect(reverse("encyclopedia:title", args=(title,)))
else:
form = CreateForm()
return render(request,"encyclopedia/create.html",{"form": form})
def search(request):
sval = request.POST.get("q")
return render(request,"encyclopedia/Search.html",{"entries":[s for s in util.list_entries() if sval.lower() in s.lower()]})
def edit(request,title):
if request.method == 'POST':
#x = markdowner.convert(util.get_entry(title))
x = util.get_entry(title)
form = Edit(initial={'textarea': x})
return render(request,"encyclopedia/edit.html",{"form":form,"title": title})
def randomPage(request):
if request.method == 'GET':
entries = util.list_entries()
num = random.randint(0, len(entries) - 1)
title = entries[num]
return render(request,"encyclopedia/title.html",{"Content": markdowner.convert(util.get_entry(title)),"title":title})