일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Selenium
- 코테 연습
- django
- 코딩 테스트
- Kafka
- 데브코스
- Tableau
- PCCP
- VPC
- GCP
- 데이터 엔지니어
- 코딩테스트
- 데이터 시각화
- HTML
- superset
- AWS
- Til
- Spark
- 팀 프로젝트
- Snowflake
- beuatifulsoup
- airflow
- cloud platform
- 슈퍼셋
- SQL
- Today
- Total
주니어 데이터 엔지니어 우솨's 개발일지
뷰(View)와 템플릿(template) 본문
뷰(Views)와 템플릿(Templates)
render함수
Django의 내장 함수 중 하나로, HTTP 요청을 받아 해당 요청에 대해 원하는 템플릿 파일을 렌더링하여 응답하는 기능을 가지고 있다.
render() 함수는 보통 Django의 뷰(View)에서 사용되며, 첫 번째 인자로 요청(Request) 객체, 두 번째 인자로 템플릿 파일의 경로, 그리고 세 번째 인자로 Context 변수를 입력 받는다.
polls/view.py
from .models import *
from django.shortcuts import render
def index(request) :
latest_question_list = Question.objects.order_by('-pub_date')[:5]
context = {'first_question': latest_question_list[0]}
return render(request, 'polls/index.html', context)
views에서 for문,if문 쓰는법(html)
{% if questions %}
<ul>
{% for question in questions %}
<li>{{question}}</li>
{% endfor %}
</ul>
{% else %}
<p>no question</p>
{% endif %}
{% %} 안을 채워준다
detail 링크 넣기 (a태그 사용)
<ul>
{% for question in questions %}
<li><a href="{% url 'questions:question_detail' question.id%}">{{question.question_text}}></a></li>
{% endfor %}
</ul>
404에러
사용자가 잘못된 요청을 주었을 때 나오는 에러
view.py
from django.shortcuts import get_object_or_404
def detail(request, question_id) :
question = get_object_or_404(Question,pk=question_id)
return render(request, 'polls/detail.html', {'question': question})
에러방어하기
서버가 항상 정상작동 하는건 아니기 때문에 에러상황이 발생할걸 코드를 작성 해야한다.
from django.db.models import F
selected_choice.votes = F('votes') +1
db에서 불러와서 값을 더한다.
(서버에서 동시 연산시 값이 누락되는걸 방지함)
CRUD :
Create, Read, Update, Delete
admin커스터마이징
StackedInline - 오브젝트들을 세로로 나열
TabularInline - 오브젝트들을 가로로 나열
extra - 각 Qustion마다 보여줄 choice의 수를 지정
class ChoiceInline(admin.TabularInline) :
model = Choice
extra = 3 #답변 3개 까지 가능
class QuestionAdmin(admin.ModelAdmin) :
fieldsets = [
('질문 섹션', {'fields' : ['question_text']}),
('생성일', {'fields' : ['pub_date'], 'classes' : ['collapse']}),
] #collapse - 숨김기능
readonly_fields = ['pub_date'] #읽기전용
inlines = [ChoiceInline] #다른 답변 같이 가능
verbose_name - 칼럼의 레이블 변경
search_fields = ['question_text','choice__choice_text'] #검색기능
'Django' 카테고리의 다른 글
Django 기본 (0) | 2024.04.28 |
---|---|
테스트 기능(Test) (0) | 2024.04.28 |
유저(User)와 기능(투표, 질문) (0) | 2024.04.28 |
시리얼라이저(Serializer)와 에러(Error) (0) | 2024.04.28 |