Django2.0 공식 문서 - 개요

43364 단어 Django
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 []>

# 새로운 기자 만들기
>>> r = Reporter(full_name='John Smith')
# 데이터베이스에 대상을 저장하려면'save()'를 명확하게 호출해야 한다.
>>> r.save()
#아이디 하나 주세요.
>>> r.id
1
#지금 이 새로운 "기자"는 이미 당신의 데이터베이스에 있습니다.
>>> Reporter.objects.all()
<QuerySet [<Reporter: John Smith>]>
# 이름 필드는 Python 객체에서 하나의 속성으로 표시됩니다.
>>> 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'
#역으로'기자'대상을 통해'기사 대상'을 볼 수 있다
>>> r.article_set.all()
<QuerySet [<Article: Django is cool>]
#API 인터페이스는 필요에 따라 관계에 따라 효율적으로 실행할 수 있음 #JOINs for you behind the scens다음은 "John"이라는 이름으로 시작하는 모든 대상을 되돌려줍니다
>>> Article.objects.filter(reporter__full_name__startswith='John')
<QuerySet [<Article: Django is cool>]>
# 속성을 변경하여 객체를 변경하고 save()를 호출하여 저장
>>> r.full_name = 'Billy Goat'
>>> r.save()
# delete()를 호출하여 객체를 삭제합니다.
>>> 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.py
from django.contrib import admin

from . import models

admin.site.register(models.Article)
、 , , 。

Django apps , ( ) 。 public( , )

(URL)

URLDjango URL, .php、.asp URL !=3=

URLPython URLconf。 , URL PythonURLconf Python URL

Reporter/Article URLconf
mysite/news/urls.py
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 Python ("views")。 URL 。 ,Django , URL 。( URL,Django 404 =。=) , 。
URLDjangoPython 。 。

: 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)을 읽거나 커뮤니티에 가입할 수 있다.
    당신의 지지에 감사 드립니다!

    좋은 웹페이지 즐겨찾기