views.py
def index(request):
if "tasks" not in request.session:
request.session["tasks"] = []
return render(request, "tasks/index.html", {
"tasks": request.session["tasks"]
})
"no such table: django_session" 에러가 뜬다.
장고는 테이블에 정보를 저장하는데 테이블이 없어서 나오는 에러이다.
python manage.py migrate
로 default tables를 생성할 수 있다.
index.html
{% extends "tasks/layout.html" %}
{% block body %}
<h1>Tasks</h1>
<ul>
{% for task in tasks %}
<li>{{ task }}</li>
{% empty %}
<li>No tasks.</li>
{% endfor %}
</ul>
<a href="{% url 'tasks:add' %}">Add a New Task</a>
{% endblock %}
views.py의 add 함수에서
tasks.append(task)
를 request.session["tasks"] += [task]
로 바꾸어 준다.
-> 이제 사용자 마다 task가 각각의 session에 저장되고 보여진다.
from django.shortcuts import render
from django import forms
from django.http import HttpResponseRedirect
from django.urls import reverse
class NewTaskForm(forms.Form):
task = forms.CharField(label="New Task")
priority = forms.IntegerField(label="Priority", min_value=1, max_value=5)
# Create your views here.
def index(request):
if "tasks" not in request.session:
request.session["tasks"] = []
return render(request, "tasks/index.html", {
"tasks": request.session["tasks"]
})
def add(request):
if request.method == "POST":
form = NewTaskForm(request.POST)
if form.is_valid():
task = form.cleaned_data["task"]
request.session["tasks"] += [task]
return HttpResponseRedirect(reverse("tasks:index"))
else:
return render(request, "tasks/add.html", {
"form":form
})
return render(request, "tasks/add.html", {
"form": NewTaskForm()
})
django 설치, 앱 만들기, html 띄워보기, post 요청 받아오기, session에 저장하기 등등 겉 햝기를 해보았다.