본문 바로가기

Backup/Django

[Django #11] Dynamic sidebar 이번장에서는 tutorial 페이지에서 side nav bar을 추가할것이다.views.py내에서 single_slug funtion에 다음과 같은 코드를 추가하자 tutorials = [t.tutorial_slug for t in Tutorial.objects.all()] if single_slug in tutorials: this_tutorial = Tutorial.objects.get(tutorial_slug=single_slug) return render(request = request, template_name='main/tutorial.html', context = {"tutorial":this_tutorial})이제 튜토리얼 페이지를 만들어보자.{% extends 'main/header.ht.. 더보기
[Django #10] Working with Foreign Keys 이번장에서는 foreign key를 사용해서 각 table간 어떻게 작동시키게 할건지를 만들어 보겠다. 우리는 각 series 페이지에 들어갈때 주소를 simple하게 하나의 제목 "one slash"로 구성하게 할것이다. 대부분의 사이트는 directory안에 있으면 그 full 경로를 주소창에 쳐야 접속이 되겠지만 가 지져분해보이고 내가만든 사이트에서는 그리 복잡한 구조가 아니기 때문에 그냥 단순히 파일이름을 치면 그 웹페이지로 가게 할것이다. 이런 기능을 위해서 view에서 내용을 검색하고 주소를 반환해주는 하나의 함수가 필요하고 이를 single_slug함수라 하겠다. from .models import Tutorial, TutorialCategory, TutorialSeriesfrom djang.. 더보기
[Django #9] Foreign Keys with Models 이번장에는 foreign keys 사용법에 대해 알아보겠다. foreign keys를 통해서 서로다른 database table의 객체를 연결키켜 관리할수있다. 우리가 만약 지금처럼 하나의 tutorial object으로 contents를 추가해 나간다면 굉장히 큰 단위의 object가 될것이고 관리가 어려워 질것이다. 그래서 tutorial categories-series-content 단위로 table을 만들고 이를 foreign key로 만들어 관리하려한다.우선 기존의 model을 두개를 더 만들것이다. tutorial-> series and category. series는 tutorial을 가르키는 foreign key를 가질것이고 series는 또 각 category의 foreign key로 부.. 더보기
[Django #8] User Login and Logout 이번장에서는 우리의 user handling과 로그인 로그아웃 기능들을 만들어 볼것이다.로그아웃부터 작업해보자면(쉬우니까) Django에서 이미 logout function을 제공한다./logout URL부터 만들어보자 main/mysite/urls.py 를 아래와 같이 만들어라: from django.urls import path from . import views app_name = 'main' # here for namespacing of urls. urlpatterns = [ path("", views.homepage, name="homepage"), path("register/", views.register, name="register"), path("logout", views.logout_re.. 더보기
[Django #7] Messages 이번장에서는 messeages, 그리고 로그인 되어있었을때의 navbar 상태, 그리고 template에서 including하는법에 대해서 다뤄보겠다. 일단 messege는 사용자들에게 정보를 전달하는 측면에서 유용한 기능이 될것이다.materialize.css에서 지원하는 toasts라는 javascript를 이용해서 쉽게 메세지를 우리의 웹에서 띄울수있따.이 예제에서는 우리는 user에게 error를 메세지를 통해 전달해 보겠다.일단 mysite/main/views.py에 아래 import 추가:from django.contrib import messages그리곤 새로 추가됬다는 내용messages.success(request, f"New account created: {username}")그리고 에.. 더보기
[Django #6] User Registration 이번장에서는 user account에 대한 부분을 작업해볼것이다. login, logout, register, 또 우리가 로그인 하였다면 로그인된 상태도 페이지에 반영하게 할것이다.일단 Django에서 제공해주는 User model을 쓸건데 여기에서 제공되는 기능들이 무엇인지 한번 살펴보자$ python3 manage.py shell Python 3.7.2 (v3.7.2:9a3ffc0492, Dec 24 2018, 02:44:43) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from django.contrib.. 더보기
[Django #5] CSS 이번장에서는 약간의 styling이랑 design에 신경써볼것이다.python으로 제공된 web framework가 있는것처럼 CSS framework들도 있다. 많은 CSS framework 중에서도 boostrapt이라는 css가 가장 유명하지만 이번기회에는 Materialize CSS 를 써볼것이다.사용하기위해서 두가지 방법이 있는데 (hostedversion을 쓸지, 아니면 local에 다운받아서 고쳐쓸지...)할수있는데 일단 간단한 host에 있는걸 그냥 써보자. CSS를 쓰려면 그 위치를 head tags에 추가해야한다.Materialize CSS framework가 제공해주는 javascript도 같이 추가해주자. mysite/main/templates/main/home.html head t.. 더보기
[Django #4] Views and Templates 이번장에서는 views로 models, template를 어떻게 상호작용하는지 더 자세히 알아보겠다.일단 우리의 mysite/main/views.py에 아래와 같이 함수를 수정하자.def homepage(request): return render(request = request, template_name='main/home.html', context = {"tutorials":Tutorial.objects.all}) 우리는 render라는걸 통해서 함수가 request와 함께 호출되면 html/template 을 만들어서 보여줄것이다. 여기서 Python object도 같이 넘겨서 rendering 할때 사용할수 있게 할것이다. 그러기 위해서 dictionary형태로 넘길것인데, key는 variable.. 더보기
[Django #3] Admin and Apps 이번장에서는 Django가 제공해주는 admin 기능들을 살펴보겠다. 우선 admin 계정을 만들어야 한다. python3 manage.py createsuperuser Username (leave blank to use 'harrisonkinsley'): sentdex Email address: harrison@pythonprogramming.net Password: Password (again): Superuser created successfully.email은 일단 아무거나 지정하고 계정을 만들고 나면 http://127.0.0.1:8000/admin로 들어가보자. 이 user interface를 통해 models들을 관리할수있다.여기서 수정, 추가, 삭제 등을 할수있다. 지금은 Groups와 U.. 더보기
[Django #2] Models 이번장에서는 Django의 핵심인 Models 에 대해 알아보겠다. 우선 Tutorial model을 만들어 볼것이다. Tutorial model에 게시글 기능을 할수있도록 일단 제목, 날짜, 내용 작성의 기능을 가지도록 만들어 보겠다. Django는 확작성이 좋기때문에 나중에 더 필요한 기능을 쉽게 추가해줄수도있다.이 모델들은 해당 app에서 unique 해야 한다. mysite/main/models.pyfrom django.db import models class Tutorial(models.Model): tutorial_title = models.CharField(max_length=200) tutorial_content = models.TextField() tutorial_published = m.. 더보기