오늘은 며칠동안 배운 django 를 계속해서 복습하는 시간을 가졌다. 확실히 강의를 듣고나서 이해는 되는데 역시 처음부터 구현을 하려그러면 계속 코드를 보고 따라 치게된다.. 이러니 실력이 잘 늘지 않는 것 같다.
항상 강의를 다듣고 생각나는거지만 강의를 한번 듣고, 바로 혼자서 한번씩 더 구현해보는 연습을 해봐야하는데 뭔가 강의에 쫒기다 보니 그러지 못해 마무리가 항상 아쉬운 것 같다. 그래서 오늘은 그동안 강의에서 배웠던걸 천천히 하나씩 복습해보는 시간을 가졌다. 또한 아침퀴즈 시간코드가 도움이 많이 되어서 처음부터 끝까지 다시 구현을 해보았다.
def new_view(request):
if request.method == 'POST':
title = request.POST.get('title', None)
content = request.POST.get('content', None)
category_name = request.POST.get('category', None)
category = Category.objects.get(name=category_name)
article = Article.objects.create(title=title, content=content, category=category)
return redirect('detail', article.pk)
elif request.method == 'GET':
categories = Category.objects.all()
return render(request, 'new.html', {'categories':categories})
먼저 vview 파이를 보면 request.POST.get 으로 각각의 벨류를 받아온다
Category_name을 db에서 get으로 가져온 category 에 넣어준다
그값을 Article 에 각각 새롭게 저장을 해주고 return 시켜준다.
article.pk 는 장고는 기본적으로 들어오는 db에 대해서 순서대로pk 순서를 매긴다 그러니깐 저렇게 들어간 정보는 pk1이 된다.
def detail_view(request, pk):
article = Article.objects.get(pk=pk)
return render(request,'detail.html',{'article':article})
path('detail/<int:pk>', views.detail_view, name='detail'),
넘겨준 pk값은 이렇게 사용할 수 있다.
각 aritcel 번호로 이동할 수 있음
def category_view(request):
categories = Category.objects.all()
infos = {}
for category in categories:
infos[category.name] = Article.objects.filter(category=category).count()
return render(request,'category.html', {'infos':infos})
{% for name, count in infos.items %}
<a href="{% url 'article' name %}">{{ name }}({{ count }})</a>
{% endfor %}
<a href="{% url 'new' %}">글쓰기</a>
category 부분이 많이 헷갈렸다.
infos = {}를 이용해서 그것을 for문으로 돌리면
infos[영화] 3(count)
이런식으로 사용이 가능하게 된다.
이부분이 많이 어렵긴 한데 이해하는데 조금 오래 걸렸다.
오늘은 템플릿문법을 사용하는법을 많이 익힌 것 같다.
아그리고 DB 사용할때도 에러가 많이나서 DB사용법도 잘 알고 잇어야 할 것 같다.
class Category(models.Model):
name = models.CharField(max_length=15)
desc = models.TextField(max_length=256)
class Article(models.Model):
title = models.CharField(max_length=15)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
content = models.TextField(max_length=256)
ForeingKEy 로 category 를 Category 에 외부키로 사용할 수 있게 하였다.
이외에도 오늘 하루는 계속해서 복습을 진행하였다. 그래도 아직 복습할 내용이 많지만 내일 지나면 바로프로젝트이다.
내일은 빨간날이지만 계속 복습을 진행해볼 예정이다.
django가 편한기능이 많기는 하지만 그만큼 완벽하게 이해하고 써야하는 것 같다. 기존에 작업들보다 훨씬 많은 오류를 내뱉고 있다.