- 파이썬용 백엔드 웹 프레임 워크

 

//-----------------------------------------------------------------------------

결론 : 템플릿 기능이 너무 불편해서 사용하기 힘듬

    아래 템플릿 항목 참고


//-----------------------------------------------------------------------------
https://wikidocs.net/91422

장고 설치
pip install django

- 장고 프로젝트 생성
django-admin startproject web_study

- 데이터베이스 생성 (Sqlite3)
python manage.py migrate
- db.sqlite3 파일 생성됨

- 장고 프로젝트 실행
python manage.py runserver 
http://127.0.0.1:8000/ 으로 접속


//-------------------------------------
- 앱 만들기
python manage.py startapp main

- 설정 수정
web_study/settings.py 파일 수정, main 추가

INSTALLED_APPS = [
...
  'main',


//-------------------------------------
페이지 만들기
main/templates/index.html 파일 생성

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    장고 첫페이지!
</body>
</html>


//-------------------------------------
- main/view.py 수정
def index(request):
    return render(request,'index.html')


//-------------------------------------
- main/urls.py 생성
from django.urls import path

from . import views


urlpatterns = [
    path('', views.index, name='index'),
]

//-------------------------------------
- web_study/urls.py 파일 수정
urlpatterns = [
    ...
    path('', include('main.urls')),
]


//-----------------------------------------------------------------------------
페이지 추가
https://wikidocs.net/91420

- main/templates/index.html 파일 생성


- main/view.py 수정
def board(request):
    return render(request, 'board.html')


- main/urls.py 수정
urlpatterns = [
    path('', views.index, name='index'),
    path('board', views.board, name='board'),
]



//-----------------------------------------------------------------------------
정적 파일 로드
- javascript 파일 로드 방법

- settings.py 수정
STATIC_URL = "static/"

STATICFILES_DIRS = [
    BASE_DIR / "static",
]


- *.html 파일 수정
{% load static %}
<script src='{% static "js/libs.js" %}?v=2'></script>


//-----------------------------------------------------------------------------
Model 사용법

- models.py 수정

class User(models.Model):
    id = models.IntegerField()
    name = models.CharField(max_length=100)

# 테이블 이름 지정
    class Meta:
        db_table = "mj_users"  


- views.py 수정

from .models import User

def quiz(request):
    users = User.objects.all()
    return render(request, 'quiz.html', {'users':users})


- *.html 수정
   <ul>
        {% for list in users %}
        <li>{{ list.name }}</li>
        <li>{{ list.tel }}</li>
        {% endfor %}
    </ul>

//-----------------------------------------------------------------------------
템플릿

문자열 합치기
https://stackoverflow.com/questions/4386168/how-to-concatenate-strings-in-django-templates
{% with "shop/"|add:shop_name|add:"/base.html" as template %}
{% include template %}
{% endwith %}


//-------------------------------------
- 모든 변수를 템플릿으로 넘기기
https://rubayeet.wordpress.com/2009/10/31/django-how-to-make-a-variable-available-in-all-templates/
RequestContext 설치
from django.templates import RequestContext

def my_view(request):
   #view code
   return redner_to_response('my_template.html', {'foo:bar'}, \
                              context_instance=RequestContext(request))



//-------------------------------------
템플릿 내에서 함수 실행
https://medium.com/swlh/custom-functions-in-django-template-tags-64b73037f2a6
필터로 별도로 만든후 load 해서 사용


반응형
Posted by codens