# articles > forms.py
더보기
from django import forms
class ArticleForm(forms.Form):
title = forms.CharField(max_length=10)
content = forms.CharField(widget=forms.Textarea)
model이랑 구조가 거의 비슷하다.
# articles >views.py
더보기
from django.shortcuts import render, redirect
from .models import Article
from . forms import ArticleForm
# Create your views here.
def index(request):
articles = Article.objects.all()
context = {
'articles': articles,
}
return render(request, 'articles/index.html', context)
def detail(request, pk):
article = Article.objects.get(pk=pk)
context = {
'article': article,
}
return render(request, 'articles/detail.html', context)
def new(request):
form = ArticleForm()
context = {
'form': form,
}
return render(request, 'articles/new.html',context)
def create(request):
title = request.POST.get('title')
content = request.POST.get('content')
article = Article(title=title, content=content)
article.save()
return redirect('articles:detail', article.pk)
def delete(request, pk):
article = Article.objects.get(pk=pk)
article.delete()
return redirect('articles:index')
def edit(request, pk):
article = Article.objects.get(pk=pk)
context = {
'article': article,
}
return render(request, 'articles/edit.html', context)
def update(request, pk):
article = Article.objects.get(pk=pk)
title = request.POST.get('title')
content = request.POST.get('content')
article.title = title
article.content = content
article.save()
return redirect('articles:detail', article.pk)
# articles > templates > articles > new.html
더보기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>New</h1>
<form action="{% url "articles:create" %}" method="POST">
{% csrf_token %}
{{ form }}
{% comment %} <div>
<label for="title">Title: </label>
<input type="text" name="title" id="title">
</div>
<div>
<label for="content">Content: </label>
<textarea name="content" id="content"></textarea>
</div> {% endcomment %}
<input type="submit">
</form>
<hr>
<a href="{% url "articles:index" %}">[back]</a>
</body>
</html>
서버를 켜서 확인해보기
python manage.py runserver
http://127.0.0.1:8000/articles/
'WEB > Django prac' 카테고리의 다른 글
[Django prac][Form] 4. Widgets _ exclude() (0) | 2024.03.28 |
---|---|
[Django prac][Form] 3. Widgets (0) | 2024.03.28 |
[Django prac][Form] 1. Form Class (0) | 2024.03.28 |
[Django prac][ORM with View] CRUD 구현 14_Update (0) | 2024.03.28 |
[Django prac][ORM with View] CRUD 구현 13_Update (0) | 2024.03.28 |