django 004 | CRUD : Read


1.Read実習


=>以前のblogアプリから
1. views.変更
def home(request):
    blogs=blog.objects.all()
    return render(request, 'home.html',{'blogs':blogs})
=>homeが関数を渡すと、ブログのすべてのパラメータが一緒に返されます.htmlで表示
URL
  • viewsの変更
    (1)appのviewsを入力
    from blog import views
    (2)パスの追加
    path('', views.home, name="home"),
  • home.htmlの変更
    この時は先に家に帰ります.htmlを変更します:文章のクエリーセットだけを表示して、不完全に見えます
  • <body>
        <h1>Blog Project</h1>
        {% for blog in blogs %}
            {{blog}}}
        {% endfor %}
    </body>
    (2)したがって,出力の詳細が(1)よりも細いことを確保しなければならない.
    <body style="text-align: center;">
        <h1>Blog Project</h1>
        {% for blog in blogs %}
            제목 : {{blog.title}} <br><br>
            작성자 : {{blog.writer}} <br><br>
            내용 : {{blog.body}} <br><br>
        {% endfor %}
    </body>
    =>
  • (+)summary機能
  • を追加
    (1)summary関数をモデルに追加する
        def summary(self):
            return self.body[:100] #파이썬 슬래쉬 기능으로 100자까지 잘라주기

    (2) home.htmlの変更
    내용 : {{blog.body}}
    上の友達.
    내용 : {{blog.summary}}
    クリスタル
  • の詳細を表示できるページ
  • を作成する必要があります.

    path-converter:元のデータベース要素ごとに一致するページが必要です.ただし、=>path-converter機能では、統合ビュー、設定ビュー、URL接続を作成することはほとんど不可能です.
    (1)ビューにdetail関数を追加する
    def detail(request, id):
        Blog=get_object_or_404(blog, pk=id) 
        #여기서 두개를 가져올거임 (1)테이블 : (2)pk를 가져오는 것
        #pk는 row를 구별해주는 친구
        # pk =매개변수를 받은 id
        #이는 쿼리셋이 아닌 오브젝트 하나만을 가져옴
        return render(request, 'detail.html', {'blog':Blog})
    =>blogはid値を受け入れpkとして区別し,戻るときにidに対応する子供を返す.
    (2)このid値はurlを調整することができ、ユーザがidに基づいて異なる結果を表示できるようにするため、urlパスを追加する
        path('<str:id>', views.detail, name="detail" ),
  • のデータ識別値に従って、異なる値
  • が生成される.
  • の2番目のパラメータはviewsの関数名
  • です.
  • 最後はpath名
  • (3)最後にこのid値はどこから得られたのですか?
    =>まっすぐ帰ります.htmlから受信
        <div class="container">
        <h1>Blog Project</h1>
        {% for blog in blogs %}
            제목 : {{blog.title}} <br><br>
            작성자 : {{blog.writer}} <br><br>
            내용 : {{blog.summary}} <a href="{ %url 'detail' blog.id $}")>...more</a>
        {% endfor %}
    </div>
  • aタグ(...more)使用detail url的情况下使用的blog.id属性
  • 同时提供的(4)detail.htmlの変更<body> <h1>{{blog.title}}</h1> {{blog.writer}}<br><br> {{blog.pub_date}} <br> {{blog.body}} </body>成果物:(+)dbagviews.py最初是这样写的def detail(request,id): blog=get_object_or_404(blog, pk=id) return render(request,'detail.html',{'blog':Blog})blog=get_object_or_404(blog,pk=id)この文章の後ろのblogは前のblogと同じであり,衝突エラが発生した.前的变数名改为blog