djnago 강의 복습, 개인적인 복습

김하진·2022년 5월 31일
0

오늘은 며칠동안 배운 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가 편한기능이 많기는 하지만 그만큼 완벽하게 이해하고 써야하는 것 같다. 기존에 작업들보다 훨씬 많은 오류를 내뱉고 있다.

profile
진킴

0개의 댓글