ABOUT ME

초보 개발자의 코딩 노트( 코딩탕탕)

Today
Yesterday
Total
  • Python Django 15 - ORM(DB) 사용 예제(필드 타입 명령)
    Python Django 2022. 10. 23. 14:50

     

    urls.py

    from django.contrib import admin
    from django.urls import path
    from myapp import views
    
    urlpatterns = [
        path("admin/", admin.site.urls),
        
        path("", views.main), 
        path("show", views.show),
    ]

     

    views.py

    from django.shortcuts import render
    from myapp.models import Article
    
    def main(request):
        return render(request, 'main.html')
    
    def show(request):
        # sql = "select * from Article"
        datas = Article.objects.all()  # Django ORM
        print(datas)
        print(datas[0].name)
        
        return render(request, 'list.html', {'articles':datas})

    models.py에서 만든 database를 datas라는 변수명에 넣고 그것을 dict 타입으 list.html로 가져가고 있다.

     

    admin.py

    from django.contrib import admin
    from myapp.models import Article
    
    # Register your models here.
    class ArticleAdmin(admin.ModelAdmin):
        list_display = ('id','code','name','price','pub_date')
        
    admin.site.register(Article, ArticleAdmin)

     

    models.py

    from django.db import models
    
    # Create your models here.
    # Database Table을 class로 선언
    
    class Article(models.Model):
        code = models.CharField(max_length = 10)
        name = models.CharField(max_length = 20)
        price = models.IntegerField()
        pub_date = models.DateField()

     

    main.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <p>메인</p>
    메뉴1 메뉴2 <a href="show">자료보기</a>
    </body>
    </html>

     

    list.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    {% extends 'layout.html' %}
    
    {% block content %}
    
    <p>Article 데이터 출력</p>
    {% if articles.count > 0 %}
    {% for a in articles %}
    	<b>{{a.code}}</b> {{a.name}} {{a.price}} {{a.pub_date}} <br />
    {% endfor %}
    {% else %}
    	<p>자료 없음</p>>
    {% endif %}
    
    {% endblock %}
    </body>
    </html>

     

    layout.html

    <h2>** 자료 보기 **</h2>
    <div style="color:blue;">
    	{% block content %}
    	
    	{% endblock %}
    </div>

    layout.html 이라는 파일을 만들어서 원하는 곳에 include 할 수 있다.

     

     

    댓글

Designed by Tistory.