django 011 | Form
Form実習
=>formを使用すると、最後にピクチャファイルバーを追加してビュー、urls、すべてを置き換える手間を回避できます.
検証=>
from django import forms
from .models import blog
class blogform(forms.ModelForm):
class Meta : #내가 아래에 있는 필드들 적절히 연결해주겟다~
model=blog
fields=['title', 'writer', 'body', 'image']
#필드에서 내가 원하는 아이들만 pick해서 blogForm으로 해주겟당~
from .forms import blogform
def new(request):
form=blogform()
return render(request, 'new.html',{form : form})
<form action ="{% url 'create' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
제목 : <input type="text" name="title"><br><br>
작성자 : <input type="text" name="writer"><Br><br>
본문 : <textarea name="body" id="" cols="30" rows="10"></textarea><br>
사진 : <input type="file" name="image">
<br><button type="submit">저장하기</button>
</form>
修正後のhtml <form action ="{% url 'create' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{form}}
{% endblock %}
</form>
これでnewhtmlサーバに戻る {{form.as_p}}
そろえる
(+)テーブルで包むこともできます
<table>
{{form.as_table}}
</table>
def create(request): #new.html에서 오는 정보를 받아줘야 함
new_blog=blog()
new_blog.title=request.POST['title']
new_blog.writer=request.POST['writer']
new_blog.body=request.POST['body']
new_blog.pub_date=timezone.now()
new_blog.image=request.FILES['image']
new_blog.save()
return redirect('detail', new_blog.id)
def create(request): #new.html에서 오는 정보를 받아줘야 함
form=blogform(request.POST, request.FILES)
if form.is_valid: #유효성 검사
new_blog=form.save(commit=False)
#blogform엔 pub_date가 들어가지 않는데그냥 냅둔다면 빈칸으로 쌓일거기 때문에
#commit false로 임시저장 시캬노코 pubdate 추가해야함
new_blog.pubdate=timezone.now()
new_blog.save() #pub도 추가했으니 최종 저장
return redirect('detail', new_blog.id)
return redirect('home') #form 유효안하면 home으로
Reference
この問題について(django 011 | Form), 我々は、より多くの情報をここで見つけました https://velog.io/@myway00/django-011-Formテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol