django | 9. READ(HTMLでAdminデータを問い合わせる)
まず
1. main.htmlでデータの問題リストを表示できます.htmlにリンクするリンクを生成します.
2. question_list.htmlはhome/templatesで作成されます.
モデルデータの表示
1. main.htmlでデータの問題リストを表示できます.htmlにリンクするリンクを生成します.
2. question_list.htmlはhome/templatesで作成されます.
モデルデータの表示 # home/views.py
from django.shortcuts import render # render가 import 되어있다. (views.py기본 세팅)
from .models import Question # 모델 import 하기
...
def question_list(request):
# questions = Question.objects.all() # Question 모델 데이터를 questions라고 한다.
questions = Question.objects.order_by('-create_date') # Question 모델 데이터를 작성일시의 역순(-)으로 정렬한다.
context = {'questions_list' : questions } # 위의 questions를 context 변수인 question_list에 저장한다.
return render(request, 'home/question_list.html', context)
render関数はコンテキスト内のQuestionモデルデータ問題リストをHTMLコードに変換します.今はquestion listです.htmlファイルに適用されます.これらのファイルをテンプレート(template)と呼びます.注釈ラベルを追加できるHTMLと見なすだけです.<!-- home/question_list.html -->
<h1>질문 리스트 보기</h1>
{% if questions_list %} # 앞에서 선언한 context 변수->render 함수에서 템플릿을 전달한 Question 모델 데이터가 저장되어 있다, question_list가 있다면
<ul>
{% for question in questions_list %} # question_list를 반복하며 순차적으로 question에 대입
<li>
<a href="/home/{{ question.id }}/">{{ question.subject }}</a> # 위에서 선언한 question 객체의 id와 subject를 출력
</li>
{% endfor %}
</ul>
{% else %}
<p>질문이 없습니다.</p>
{% endif %}
テンプレートタグの3種類
ブランチ、リピート、オブジェクト
1.四半期
{% if 조건문1 %}
<p>조건문 1</p>
{% elif 조건문2 %}
<p>조건문 2</p>
{% else %}
<p>조건문 1, 2에 모두 해당하지 않는 경우</p>
{% endif %}
2.繰り返し
{% for item in list %}
<p>순서 : {{ forloop.counter }}</p>
<p>{{ item }}</p>
{% endfor %}
重複テンプレートでは、forloop
オブジェクトを使用できます.forloop
オブジェクトは反復で有用な値を提供します.
forloopオブジェクトのプロパティはforloopを示します.1からforloopを逆方向文字文の順に表示します.0から0を反問順としてfor loopを表示します.firstfor文の最初の順序がTrueForloopである場合.Lastfor文の最後の順序であればTrue
3.対象
{{ question }}
{{ question.id }}
{{ question.subject }}
オブジェクトに属性がある場合は、.
ハイフンを使用します.
テンプレートに正式なドキュメントをマーク
質問の詳細の表示 # home/urls.py
from django.urls import path
from .views import * # home>views에서 모든 함수를 가져온다.
app_name = "home"
urlpatterns = [
...
path('<int:question_id>', question_detail, name="question_detail"), # 경로, 함수, 경로 이름, 경로는 home/<int:question_id>가 적용된다.
]
# home/views.py
...
def question_detail(request, question_id):
question = Question.objects.get(id=question_id) # urls.py에 mapping된 question_id와 같은 것
context = { 'a_question' : question } # 위의 question를 context 변수인 a_question에 저장한다.
return render(request, 'home/question_detail.html', context)
<!-- home/question_detail.html -->
<h1>{{ a_question.subject }}</h1>
<div>{{ a_question.content }}</div>
a questionオブジェクトは、question detail関数でrender関数に渡されるコンテキストに格納されたデータです.
URLを明確に作成 <!-- home/question_list.html -->
...
<!--
<a href="/home/{{ question.id }}">{{ question.subject }}</a>
대신 -->
<a href="{% url 'home:question_detail' question.id %}">{{ question.subject }}</a>
...
さまよう理由
home/question_list.htmlでは、パスは/home/{{ question.id }}/
です.
home/urls.pyから経路<int:question_id>
->/home/<int:question_id>
へ.
最後に/
の違いがあるかどうかがうろうろの原因になった.
まだあります.
home/question_list.htmlでは、パスはhome/{{ question.id }}
、すなわちhome/home/{{ question.id }}
である.
知る由もないよくわかりませんが...
Reference
この問題について(django | 9. READ(HTMLでAdminデータを問い合わせる)), 我々は、より多くの情報をここで見つけました
https://velog.io/@printver_2world/django-9.-Admin-데이터를-HTML에서-조회하기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
# home/views.py
from django.shortcuts import render # render가 import 되어있다. (views.py기본 세팅)
from .models import Question # 모델 import 하기
...
def question_list(request):
# questions = Question.objects.all() # Question 모델 데이터를 questions라고 한다.
questions = Question.objects.order_by('-create_date') # Question 모델 데이터를 작성일시의 역순(-)으로 정렬한다.
context = {'questions_list' : questions } # 위의 questions를 context 변수인 question_list에 저장한다.
return render(request, 'home/question_list.html', context)
<!-- home/question_list.html -->
<h1>질문 리스트 보기</h1>
{% if questions_list %} # 앞에서 선언한 context 변수->render 함수에서 템플릿을 전달한 Question 모델 데이터가 저장되어 있다, question_list가 있다면
<ul>
{% for question in questions_list %} # question_list를 반복하며 순차적으로 question에 대입
<li>
<a href="/home/{{ question.id }}/">{{ question.subject }}</a> # 위에서 선언한 question 객체의 id와 subject를 출력
</li>
{% endfor %}
</ul>
{% else %}
<p>질문이 없습니다.</p>
{% endif %}
ブランチ、リピート、オブジェクト
1.四半期
{% if 조건문1 %}
<p>조건문 1</p>
{% elif 조건문2 %}
<p>조건문 2</p>
{% else %}
<p>조건문 1, 2에 모두 해당하지 않는 경우</p>
{% endif %}
2.繰り返し
{% for item in list %}
<p>순서 : {{ forloop.counter }}</p>
<p>{{ item }}</p>
{% endfor %}
重複テンプレートでは、forloop
オブジェクトを使用できます.forloop
オブジェクトは反復で有用な値を提供します.forloopオブジェクトのプロパティはforloopを示します.1からforloopを逆方向文字文の順に表示します.0から0を反問順としてfor loopを表示します.firstfor文の最初の順序がTrueForloopである場合.Lastfor文の最後の順序であればTrue
3.対象
{{ question }}
{{ question.id }}
{{ question.subject }}
オブジェクトに属性がある場合は、.
ハイフンを使用します.テンプレートに正式なドキュメントをマーク
質問の詳細の表示 # home/urls.py
from django.urls import path
from .views import * # home>views에서 모든 함수를 가져온다.
app_name = "home"
urlpatterns = [
...
path('<int:question_id>', question_detail, name="question_detail"), # 경로, 함수, 경로 이름, 경로는 home/<int:question_id>가 적용된다.
]
# home/views.py
...
def question_detail(request, question_id):
question = Question.objects.get(id=question_id) # urls.py에 mapping된 question_id와 같은 것
context = { 'a_question' : question } # 위의 question를 context 변수인 a_question에 저장한다.
return render(request, 'home/question_detail.html', context)
<!-- home/question_detail.html -->
<h1>{{ a_question.subject }}</h1>
<div>{{ a_question.content }}</div>
a questionオブジェクトは、question detail関数でrender関数に渡されるコンテキストに格納されたデータです.
URLを明確に作成 <!-- home/question_list.html -->
...
<!--
<a href="/home/{{ question.id }}">{{ question.subject }}</a>
대신 -->
<a href="{% url 'home:question_detail' question.id %}">{{ question.subject }}</a>
...
さまよう理由
home/question_list.htmlでは、パスは/home/{{ question.id }}/
です.
home/urls.pyから経路<int:question_id>
->/home/<int:question_id>
へ.
最後に/
の違いがあるかどうかがうろうろの原因になった.
まだあります.
home/question_list.htmlでは、パスはhome/{{ question.id }}
、すなわちhome/home/{{ question.id }}
である.
知る由もないよくわかりませんが...
Reference
この問題について(django | 9. READ(HTMLでAdminデータを問い合わせる)), 我々は、より多くの情報をここで見つけました
https://velog.io/@printver_2world/django-9.-Admin-데이터를-HTML에서-조회하기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
# home/urls.py
from django.urls import path
from .views import * # home>views에서 모든 함수를 가져온다.
app_name = "home"
urlpatterns = [
...
path('<int:question_id>', question_detail, name="question_detail"), # 경로, 함수, 경로 이름, 경로는 home/<int:question_id>가 적용된다.
]
# home/views.py
...
def question_detail(request, question_id):
question = Question.objects.get(id=question_id) # urls.py에 mapping된 question_id와 같은 것
context = { 'a_question' : question } # 위의 question를 context 변수인 a_question에 저장한다.
return render(request, 'home/question_detail.html', context)
<!-- home/question_detail.html -->
<h1>{{ a_question.subject }}</h1>
<div>{{ a_question.content }}</div>
<!-- home/question_list.html -->
...
<!--
<a href="/home/{{ question.id }}">{{ question.subject }}</a>
대신 -->
<a href="{% url 'home:question_detail' question.id %}">{{ question.subject }}</a>
...
さまよう理由
home/question_list.htmlでは、パスは/home/{{ question.id }}/
です.
home/urls.pyから経路<int:question_id>
->/home/<int:question_id>
へ.
最後に/
の違いがあるかどうかがうろうろの原因になった.
まだあります.
home/question_list.htmlでは、パスはhome/{{ question.id }}
、すなわちhome/home/{{ question.id }}
である.
知る由もないよくわかりませんが...
Reference
この問題について(django | 9. READ(HTMLでAdminデータを問い合わせる)), 我々は、より多くの情報をここで見つけました
https://velog.io/@printver_2world/django-9.-Admin-데이터를-HTML에서-조회하기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(django | 9. READ(HTMLでAdminデータを問い合わせる)), 我々は、より多くの情報をここで見つけました https://velog.io/@printver_2world/django-9.-Admin-데이터를-HTML에서-조회하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol