이번 포스트로 장고(파이썬)프로젝트를 마무리 하려고 합니다.
오늘은 지난 포스트에 이이서 CRUD 중 Read 와 Update, Delete 를 구현해 보았습니다.
아래는 결과와 작업 순서를 나타냅니다.( http://kimilguk.pythonanywhere.com/award/ )
* URLs 라우팅 정의
- /home/kimilguk/KIK_profile/kik_profile/urls.py
- 내용:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('list/', views.career_list, name='career_list'),
path('award/', views.award_list, name='award_list'),
path('award/create/', views.award_create, name='award_create'), #저장폼.
path('award/read/<int:pk>/', views.award_read, name='award_read'), #내용보기:파일추가
path('award/update/<int:pk>/', views.award_update, name='award_update'), #수정폼:저장폼과 같은 파일 사용.
path('award/delete/<int:pk>/', views.award_delete, name='award_delete'), #삭제:파일없이 함수만으로 처리.
]
* 리스트파일에 내용보기 링크 추가
- /home/kimilguk/KIK_profile/kik_profile/templates/kik_profile/award.html
- 내용:
<div class="card">
<div class="card-body">
{% if content_list %}
<ul>
{% for c in content_list %}
<li><a href="{% url 'award_read' pk=c.id %}"><strong>{{c.title}}</strong></a><br>
{{c.award_date}}<br>
</li>
{% endfor %}
</ul>
{% else %}
<p>No post are available.</p>
{% endif %}
</div>
</div>
<a href="/">go to main</a>
|| <a href="/award/create/">go to Award Create</a>
* CRUD 로직 처리
- /home/kimilguk/KIK_profile/kik_profile/views.py
- 내용: def Create, Read, Update, Delete 함수생성
...
def award_create(request):
if request.method=='POST':
award_form = AwardForm(request.POST)
if award_form.is_valid():
award_form.save()
return redirect('/award/')
else:
award_form = AwardForm()
return render(request, 'kik_profile/award_form.html', {'award_form': award_form})
def award_read(request, pk):
award_instance = get_object_or_404(Award, id=pk)
printmsg = "";
printmsg = model_to_dict(award_instance) #디버그용 html파일에 출력
messages.info(request, printmsg) #디버그용 html파일에 출력
return render(request, 'kik_profile/award_read.html', {'award_instance': award_instance})
def award_update(request, pk):
award_instance = get_object_or_404(Award, id=pk)
if request.method=='POST':
award_form = AwardForm(request.POST, instance=award_instance)
if award_form.is_valid():
award_form.save()
return redirect('/award/')
else:
award_form = AwardForm(instance=award_instance)
return render(request, 'kik_profile/award_form.html', {'award_form': award_form})
def award_delete(request, pk):
award_instance = get_object_or_404(Award, id=pk)
award_instance.delete()
return redirect('/award/')
* 읽기 html파일 추가(여기서 Update폼, Delete함수 호출)
- /home/kimilguk/KIK_profile/kik_profile/templates/kik_profile/award_read.html
- 내용:
...
<div class="card">
<div class="card-body">
<p class="card-text">
id: {{ award_instance.id }} -- title: {{ award_instance.title }} date: {{ award_instance.award_date }}
</p>
</div>
</div>
<a href="/award/">go to Award List</a>
|| <a href="{% url 'award_update' pk=award_instance.id %}">go to Award Edit</a>
|| <a href="{% url 'award_delete' pk=award_instance.id %}">go to Award Del</a>
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
...
수정후 GitLab에 동기화 시킨 후 추가한 파일과 수정한 내역을 확인 할 수 있습니다.(아래)
파이썬으로 웹 스크레핑과 반응형 대시보드 앱 만들기 (1) | 2023.03.13 |
---|---|
장고마무리_어깨힘 풀고 파이썬 (0) | 2019.06.01 |
장고(파이썬)프로젝트_5 (0) | 2019.05.29 |
장고(파이썬)프로젝트_4 (0) | 2019.05.28 |
장고(파이썬)프로젝트_3 (0) | 2019.05.27 |
댓글 영역