Django2.0 공식 문서 - 개요
43364 단어 Django
Django는 빠른 리듬의 뉴스 작업 환경에서 개발되었기 때문에 대부분의 웹 페이지의 공통된 기능을 신속하고 간편하게 완성할 수 있는 프레임워크로 설계되었다.다음 정보는 Django로 데이터베이스 기반 웹 애플리케이션을 만들 수 있습니다.
이 문서의 목적은 일부 Django 기술의 세부 사항을 보여줌으로써 Django가 어떻게 일을 하는지 이해하는 데 도움을 주는 것이다. 이것은 하나의 강좌도 아니고 기술 참고 문서도 아니다.프로젝트를 시작할 준비가 되었을 때, 튜토리얼 (start with the tutorial) 을 선택하거나 자세한 문서 (dive right into more detailed documentation) 를 참고할 수 있습니다.
모델 디자인 (모델)
데이터베이스가 없어도 Django를 즐겁게 사용할 수 있습니다. Django는 관계 맵 (object-relational mapper) 을 가지고 있습니다. Python 코드를 통해 데이터베이스를 설명할 수 있습니다.
데이터 모델 문법(data-model syntax)은 당신의 모델을 나타내는 풍부한 방법을 제공합니다. 이것은 데이터베이스 구조 문제를 해결하는 데 이미 여러 해 동안 사용되었습니다.간단한 예는 다음과 같습니다.
mysite/news/models.py
from django.db import models
class Reporter(models.Model):
full_name = models.CharField(max_length=70)
def __str__(self):
return self.full_name
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
content = models.TextField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
def __str__(self):
return self.headline
安装它
接下来,启用Django命令行来自动创建数据库表格$ python manage.py migrate
migrate命令将会查看你都所有可用的模型,并在数据库中为那些没有表格的模型创建表格,同时提供你更丰富的模型控制(much richer schema control)。
享受这些不受约束的API
有了这个,你就拥有了不受约束的、丰富的DjangoPython API来访问你都数据库。API是即时创建的,不需要代码生成:# “nwes”APP
#이때는 시스템에 "기자"가 없습니다.>>> from news.models import Reporter, Article
>>> Reporter.objects.all() <QuerySet []>
# 새로운 기자 만들기# 데이터베이스에 대상을 저장하려면'save()'를 명확하게 호출해야 한다.>>> r = Reporter(full_name='John Smith')
#아이디 하나 주세요.>>> r.save()
#지금 이 새로운 "기자"는 이미 당신의 데이터베이스에 있습니다.>>> r.id 1
# 이름 필드는 Python 객체에서 하나의 속성으로 표시됩니다.>>> Reporter.objects.all() <QuerySet [<Reporter: John Smith>]>
>>> r.full_name 'John Smith'
#Django는 다양한 데이터베이스 보기 인터페이스를 제공합니다.>>> Reporter.objects.get(id=1) <Reporter: John Smith> >>> Reporter.objects.get(full_name__startswith='John') <Reporter: John Smith> >>> Reporter.objects.get(full_name__contains='mith') <Reporter: John Smith> >>> Reporter.objects.get(id=2) Traceback (most recent call last): ... DoesNotExist: Reporter matching query does not exist.
#기사 새로 만들기#현재'기사'가 데이터베이스에 저장됨>>> from datetime import date >>> a = Article(pub_date=date.today(), headline='Django is cool', ... content='Yeah.', reporter=r) >>> a.save()
#기사 객체는 인터페이스를 통해 기자 객체를 볼 수 있습니다.>>> Article.objects.all() <QuerySet [<Article: Django is cool>]
#역으로'기자'대상을 통해'기사 대상'을 볼 수 있다>>> r = a.reporter >>> r.full_name 'John Smith'
#API 인터페이스는 필요에 따라 관계에 따라 효율적으로 실행할 수 있음 #JOINs for you behind the scens다음은 "John"이라는 이름으로 시작하는 모든 대상을 되돌려줍니다>>> r.article_set.all() <QuerySet [<Article: Django is cool>]
# 속성을 변경하여 객체를 변경하고 save()를 호출하여 저장>>> Article.objects.filter(reporter__full_name__startswith='John') <QuerySet [<Article: Django is cool>]>
# delete()를 호출하여 객체를 삭제합니다.>>> r.full_name = 'Billy Goat' >>> r.save()
>>> r.delete()
动态管理界面:这不仅仅是一个框架,这是整座屋子
一旦你定义了你的模型,Django就会自动创建一个专业的几乎成形的管理界面(administrative interface)——一个可以让经过认证的用户添加、更改、删除对象的网站。这与在管理站点注册模型一样简单。
mysite/news/models.py
from django.db import models class Article(models.Model): pub_date = models.DateField() headline = models.CharField(max_length=200) content = models.TextField() reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
mysite/news/admin.pyfrom django.contrib import admin from . import models admin.site.register(models.Article)
、 , , 。
Django apps , ( ) 。 public( , )
(URL)
, URL 。Django URL, .php、.asp URL !=3=
URL, Python URLconf。 , URL Python 。URLconf Python URL。
Reporter/Article URLconf :mysite/news/urls.pyURL Python ("views")。 URL 。 ,Django , URL 。( URL,Django 404 =。=) , 。from django.urls import path from . import views urlpatterns = [ path('articles/
/' , views.year_archive), path('articles// , views.month_archive), path('articles//' / , views.article_detail), ]/ /' URL,Django , Python 。 。
: URL"/articles/2005/05/39323/", Django Django news.views.article_detail(request, year = 2005, month = 5,pk = 39323)
(views)
: HttpResponse ; ( Http404), 。
, , ( template)。 Djangoyear_archive :
mysite/news/views.py
from django.shortcuts import render from .models import Article def year_archive(request, year): a_list = Article.objects.filter(pub_date__year=year) context = {'year': year, 'article_list': a_list} return render(request, 'news/year_archive.html', context)
이 예는 썼다
딱고의
템플릿 시스템 (template system), 이 시스템은 여러 가지 강력한 기능을 가지고 있으며, 동시에 우리가 아닌 사람들도 그를 사용할 수 있도록 노력하고 있다.
템플릿 디자인 (templates)
위의 코드가 불러왔습니다
news/year_archive.html 템플릿.
Django에는 템플릿 사이의 중복성을 최소화할 수 있는 템플릿 검색 경로가 있습니다.에서
Django 설정(
settings)에서 DIRS를 통해 템플릿을 검사할 디렉터리 목록을 지정할 수 있습니다.첫 번째 디렉터리에 검색할 템플릿이 없으면 두 번째 디렉터리로 이동합니다.
가령 이미 찾았다면
news/year_archive.html 템플릿.다음은 템플릿 스타일입니다.
mysite/news/templates/news/year_archive.html{% extends "base.html" %} {% block title %}Articles for {{ year }}{% endblock %} {% block content %} <h1>Articles for {{ year }}h1> {% for article in article_list %} <p>{{ article.headline }}p> <p>By {{ article.reporter.full_name }}p> <p>Published {{ article.pub_date|date:"F j, Y" }}p> {% endfor %} {% endblock %}
쌍괄호 중의 것은 변수다.
{{
article.headline
}}} "문장 제목 속성의 값을 출력합니다."그러나 점은 속성 검색뿐만 아니라 사전 키 검색, 인덱스 검색과 함수 호출에도 사용된다.
주의{{ article.pub_date|date:"F j, Y" }}
쓰다
Unix 스타일의 채널("|"문자)이것은 템플릿 필터라고 하는데, 변수 값을 필터할 수 있다.이 예에서 날짜 필터는 지정된 형식으로 Python 날짜 시간 대상을 포맷합니다. (예를 들어 PHP 날짜 함수와 같습니다.)
너는 무수한 필터를 연결할 수 있다.너는 편찬할 수 있다
템플릿 필터 사용자 정의(custom template filters).백엔드에서 파이썬 코드를 실행할 수 있는
템플릿 태그 사용자 정의(custom template tags).
마지막으로,
"Django는""통합 템플릿""이라는 개념을 사용했습니다."즉 {% extends "base.html"%}, "'base'라는 템플릿을 먼저 불러옵니다. 블록을 정의했습니다. 다음 블록으로 블록을 채웁니다."간단하게 말하자면, 이것은 템플릿의 군더더기를 크게 줄일 수 있다. 모든 템플릿은 이 템플릿이 다른 템플릿과 다르고 유일한 내용을 정의하기만 하면 된다.
다음은 포함
정적 파일(static files)의 "base.html"템플릿:
mysite/templates/base.html{% load static %} <html> <head> <title>{% block title %}{% endblock %}title> head> <body> <img src="{% static "images/sitelogo.png" %}" alt="Logo" /> {% block content %}{% endblock %} body> html>
간단하게 말하자면, 이 템플릿은 사이트 주소의 외관 (사이트 표식이 있는 것) 을 정의하고, 하위 템플릿의 충전에 '구멍' (또는 경로) 을 제공한다.이것은 새로운 사이트를 디자인하는 것을 매우 간단하게 한다. 심지어는 하나의 파일인 기초 템플릿만 바꾸면 된다.
너도 같은 서브모델을 반복적으로 활용하여 서로 다른 기초 템플릿을 바탕으로 다양한 버전의 사이트를 만들 수 있다.
Django의 창조자는 이런 기술로 다양한 모바일 사이트를 만들었고 그는 새로운 기초 템플릿만 만들었다.
그러나 이치를 따지자면, 만약 네가 다른 시스템을 좋아한다면, 너도 굳이 써야 하는 것은 아니다
Django의 템플릿 시스템 = 3=.비록... 일지라도
Django의 템플릿 시스템 및
Django의 모형층은 매우 잘 결합되었지만, 아무도 너에게 =3=을 사용하라고 강요하지 않았다.마찬가지로 너도 굳이 써야 하는 것은 아니다
Django의 데이터베이스 인터페이스는 다른 데이터베이스 추상층을 사용할 수 있고 디스크에서 파일을 읽을 수 있으며 XML 파일을 읽을 수 있으며 하고 싶은 일을 많이 할 수 있다.각 Django 모델, 뷰, 템플릿은 다음 것과 결합됩니다.
이것들은 단지 빙산의 일각일 뿐이다
이것은 단지
Django 기능의 간략한 개요다음과 같은 유용한 기능들이 있습니다.mecached 또는 다른 백엔드와 통합된 캐시 프레임워크(caching 프레임워크). RSS, Atom을 만들고 Python 클래스를 작성하는 것처럼 간단한 연합 프레임워크 (syndication 프레임워크) 갱생동의 자동 생성 관리 기능에 대해 상기에서 이 개술은 표면적인 기능만 언급했다.
다음은 Django를 다운로드하고 튜토리얼(the tutorial)을 읽거나 커뮤니티에 가입할 수 있다.
당신의 지지에 감사 드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.