Django 프레임워크 시작
31075 단어 Django
Django MVC 모드(1) 모델 모델(2) 뷰 View(3) 컨트롤러 Controller
준비 작업
1. 프로젝트 만들기
django-admin startproject <projectName>
# eg:
django-admin startproject mysite
cd mysite
2. 프로젝트 소개
setting.py #
urls.py #
manage.py #
3. Django 기본 명령
python manage.py runserver # Django
python manage.py shell # shell
python manage.py test #
4. 데이터베이스 관련 명령
python manage.py makemigrations #
python manage.py migrate #
python manage.py dumpdata #
python manage.py loaddata #
5. Django 프로젝트 Vs Django 응용 프로그램 각 응용 프로그램은 자신의 모델 보기 템플릿 루트와 정적 파일을 관리할 수 있다. 한 항목은 하나의 설정과 몇 개의 Django 응용 프로그램을 포함할 수 있다.
6. 응용 프로그램 만들기(1) 새 응용 프로그램 만들기
python manage.py startapp <appName>
# eg:
python manage.py startapp myblog
(2)setting.py에서 app 등록
INSTALLED_APPS = [
# ...
'myblog.apps.MyblogConfig' # app
]
(3) 새 보기 함수 myblog/views.py
from django.http import HttpResponse
def hello(request):
return HttpResponse("hello Django")
(4) app에서 URL을 설정하여 myblog/urls를 새로 만듭니다.py URL과 보기 매핑 관계
from django.urls import path
from . import views
urlpatterns = [
path('hello', views.hello),
]
(5) 항목에 url urls를 설정합니다.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('myblog/', include("myblog.urls")),
]
액세스 테스트http://127.0.0.1:8000/myblog/hello
7. 응용 디렉터리
views.py #
models.py #
admin.py # Admin
apps.py #
tests.py #
urls.py # ( )
Django 모델 레이어
뷰 레이어 모델 레이어 데이터베이스
1. 모델층(1) 서로 다른 데이터베이스 간의 차이를 차단한다(2) 편리한 작업 증거
2、settings.py 설정 데이터베이스 엔진
DATABASES # sqlite3
3. 모델 필드 유형(1) 숫자 유형: IntegerField(2) 텍스트 유형: TextField(3) 날짜 유형: DataTimeField(4) 자체 증가 ID: AutoField(5) 메인 키:primarykey
myblog/models.py 새 글 모델
from django.db import models
class Article(models.Model):
# ID
article_id = models.AutoField(primary_key=True)
#
title = models.TextField()
#
brief_content = models.TextField()
#
content = models.TextField()
#
publish_date = models.DateTimeField(auto_now=True)
데이터베이스 테이블 작성 작업 수행
$ python manage.py makemigrations #
$ python manage.py migrate #
4. Django Shell 인터랙티브 프로그래밍 소범위 테스트
셸에 들어가기
python manage.py shell
from myblog.models import Article
#
a = Article()
a.title = " "
a.brief_content = " "
a.content = " "
print(a)
a.save()
#
articles = Article.objects.all()
article = articles[0]
print(article.title)
5. Django Admin 백그라운드 관리 도구 사용자 인증, 관리 테이블 표시, 입력 확인 등 비슷한 기능
관리자 만들기
python manage.py createsuperuser
백그라운드 관리 주소http://127.0.0.1:8000/admin
모형을 관리자 모듈 myblog/admin에 등록합니다.py
from django.contrib import admin
# Register your models here.
from .models import Article
admin.site.register(Article)
백그라운드 표시 myblog/models를 수정합니다.py
class Article(models.Model):
# ...
# admin Article object -> self.title
def __str__(self):
return self.title
6. 데이터 반환
보기 함수 myblog/views를 작성합니다.py
from django.http import HttpResponse, JsonResponse
from .models import Article
def articles(request):
# select * from article
lst = Article.objects.values().all()
return JsonResponse(list(lst), safe=False)
app 루트 설정 myblog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('hello', views.hello),
#
path('articles', views.articles),
]
테스트 반환http://127.0.0.1:8000/myblog/articles
[
{
"article_id": 1,
"title": " ",
"brief_content": " ",
"content": " ",
"publish_date": "2019-09-14T14:36:32.400Z"
},
{
"article_id": 2,
"title": " ",
"brief_content": " ",
"content": " ",
"publish_date": "2019-09-14T14:36:51.387Z"
}
]
Django 뷰 및 템플릿
Bootstrap 그리드 시스템, 너비 12등분https://www.bootcss.com/
1. 템플릿 시스템의 표현 형식은 텍스트가 분리된 문서의 표현 형식과 표현 내용이 특유의 라벨 자리 차지 문자를 정의한 것이다.
2. 기본 문법(1) 변수
{{name}}
(2) for 루프
{% for item in list %}
{{item}}
{% endfor %}
(3) if-else 분기
{% if true %}
true
{% else %}
false
{% endif %}
3. 렌더링 페이지 myblog/views.py
from django.shortcuts import render
from .models import Article
def index_page(request):
lst = Article.objects.all()
data = {
"article_list": lst
}
return render(request, "myblog/index.html", data)
myblog/templates/myblog/index.html
{% for article in article_list %}
<div class="page-body-main">
<h2>{{ article.title }}h2>
<p>{{ article.content }}p>
div>
{% endfor %}
4. 라우팅 매개변수
myblog/urls.py
from django.urls import path
from . import views
#
app_name = "myblog"
urlpatterns = [
#...
path('detail/' , views.detail_page, name="detail"),
]
전달 루트 매개 변수 myblog/templates/myblog/index.html
{{ article.title }}{{ article.title }}
5, 조회 SQL 로그 setting.py
# sql
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level': 'DEBUG',
},
}
}
6, Paginator 페이지
보기 함수 myblog/views.py
def index_page(request):
page = request.GET.get("page", "1")
page = int(page)
#
lst = Article.objects.all()
# , 5
paginator = Paginator(lst, 5)
current_article_list = paginator.get_page(page)
#
if current_article_list.has_next():
next_page = current_article_list.next_page_number()
else:
next_page = page
if current_article_list.has_previous():
previous_page = current_article_list.previous_page_number()
else:
previous_page = page
data = {
"article_list": current_article_list,
"page_range": paginator.page_range,
"current_page": page,
"previous_page": previous_page,
"next_page": next_page,
}
return render(request, "myblog/index.html", data)
템플릿 렌더링 페이지 섹션 (Bootstrap 스타일 사용) myblog/templates/myblog/index.html
<ul class="pagination">
<li>
<a href="{% url 'myblog:index' %}?page={{ previous_page }}" aria-label="Previous">
<span aria-hidden="true">«span>
a>
li>
{% for page in page_range %}
<li><a href="{% url 'myblog:index' %}?page={{ page }}">{{ page }}a>li>
{% endfor %}
<li>
<a href="{% url 'myblog:index' %}?page={{ next_page }}" aria-label="Next">
<span aria-hidden="true">»span>
a>
li>
ul>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.